写一个函数来查找动态创建的*变量的确切大小?
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]=%cn",size,c[size]);
}
}
int main()
{
int len=10;
char *c = malloc(len);
strcpy(c,"hello");
myfunc(c,len);
free(c);
}