无法使用sizeof()检查内存分配大小

时间:2015-03-07 05:39:11

标签: c visual-studio-2010 malloc

我正在尝试检查通过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'作为输出:

enter image description here

所以,请告诉我是否有其他方法可以做到这一点。

2 个答案:

答案 0 :(得分:8)

ptr的类型为char *,因此sizeof(*ptr)相当于sizeof(char),这就是为什么您总是在输出中获得1的原因。

通常,没有可移植的方法从malloc返回的指针获取内存大小,您需要手动记住大小。

答案 1 :(得分:0)

得到了我自己的回答。以下解决方案(步骤1)包括头文件"#include <malloc.h>"(步骤2)并使用此行"size = _msize( ptr );"来获取大小