[英]How to find Dynamically allocated size in c language?
编写一个函数来查找动态创建的*变量的确切大小?
Guys it is working but for static allocation only...
int alp=0;
printf("%d",(char*)(&alp+1)-(char*)(&alp));
它将返回4个正确的大小,这是32位计算机上int的大小,但不适用于动态分配的指针变量。
char *c=(char *)malloc(12*sizeof(char));
如何找到* c的大小,实际上这里是12 ?
请帮助我编写一个函数来查找动态分配的内存。
唯一的简短答案是您不能这样做。 您只需要自己跟踪即可。
无法以编程方式知道在对malloc()
的调用中分配了多少字节。 您需要分别跟踪该大小,并在需要的地方传递该大小。
例如:
void myfunc(char *c, int size)
{
int i;
for (i=0;i<size;i++) {
printf("c[%d]=%c\n",size,c[size]);
}
}
int main()
{
int len=10;
char *c = malloc(len);
strcpy(c,"hello");
myfunc(c,len);
free(c);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.