我正在尝试检查通过malloc()
分配的指针内存的大小。为此,我编写了一个程序,其中我最初分配的内存大小为10.然后插入for循环并使用realloc()
继续增加内存。我正在使用sizeof
检查内存大小。
这是我的代码:
int main(int argc, _TCHAR* argv[])
{
char *ptr;
long int size;
int count;
ptr = (char *) malloc(10);
size = sizeof(*ptr);
printf("size of ptr is= %d\n",size);
for(count=11;count<=100;count++)
{
ptr=(char *) realloc(ptr,count);
size = sizeof(*ptr);
printf("size of ptr is= %d\n",size);
}
return 0;
}
但我总是'1'作为输出:
所以,请告诉我是否有其他方法可以做到这一点。
答案 0 :(得分:8)
ptr
的类型为char *
,因此sizeof(*ptr)
相当于sizeof(char)
,这就是为什么您总是在输出中获得1
的原因。
通常,没有可移植的方法从malloc
返回的指针获取内存大小,您需要手动记住大小。
答案 1 :(得分:0)
得到了我自己的回答。以下解决方案(步骤1)包括头文件"#include <malloc.h>"
(步骤2)并使用此行"size = _msize( ptr );"
来获取大小