动态设置指向int的指针给出不正确的大小

Arc*_*her 3 c malloc struct

我有一个struct定义:

struct Query {  
   int *pages;
   int currentpage;
};


struct Query *new = malloc(sizeof(struct Query));

new->pages = malloc(sizeof(int) * 4);
Run Code Online (Sandbox Code Playgroud)

然后检查大小new->pages以确保大小为4:

    int size = sizeof(new->pages)/sizeof(new->pages[0]);
Run Code Online (Sandbox Code Playgroud)

但是,size保持回归2而不是4.

谁会知道我可能做错了什么?

谢谢你的帮助.

P.P*_*.P. 8

你的期望是错误的.

sizeof(new->pages)

int size = sizeof(new->pages)/sizeof(new->pages[0]);
Run Code Online (Sandbox Code Playgroud)

不返回int元素总数.只是int指针(int*)的大小.由于您的平台sizeof(int*)是8并且sizeof(int)是4,它返回2.

顺便说一下,你应该使用size_tfor size作为sizeof运算符返回a size_t并且%zuprintf()要打印的格式说明符(in )size_t.