以下内存分配有什么问题?
char *buffer;
buffer = (char*)malloc(sizeof(char)*40);
printf("buffer size: %ldn", sizeof(buffer));
这是打印8而不是40(我期望)。我错过了理解Malloc或这是正常的事情?
sizeof(buffer)
返回缓冲区的大小,这是指向char的指针。在您的机器上向字符的指针的大小为8。
操作员的结果完全基于其操作的表达式的类型,而不是身份或值。除非您使用带有大小的类型,否
buffer
是char
的指针。当将其作为参数传递给sizeof
运算符时,sizeof(buffer)
给出指针的大小,与数组名称不同,它给出了字节中整个数组的大小。永远记住,数组不是指针。