sizeof是否返回malloc内存分配的大小?

时间:2014-02-03 23:27:06

标签: c malloc

以下内存分配有什么问题?

char *buffer;
buffer = (char*)malloc(sizeof(char)*40);
printf("buffer size: %ld\n", sizeof(buffer));

这打印8而不是40(我预期)。在理解malloc时我错过了什么或这是正常的?

3 个答案:

答案 0 :(得分:3)

sizeof(buffer) 

返回缓冲区的大小,缓冲区是指向char的指针。机器上指向char的指针大小为8。

答案 1 :(得分:1)

sizeof运算符的结果完全基于它所操作的表达式的类型,而不是标识或值。它可能不知道你传递给malloc的大小,除非你使用带有它的大小的类型。

答案 2 :(得分:0)

buffer是指向char的指针。当它作为参数传递给sizeof运算符时,sizeof(buffer)给出指针的大小,而不是数组名称,它以整数形式给出整个数组的大小。永远记住数组不是指针

相关问题