我正在用C中的malloc进行实验,我发现malloc在分配内存后会浪费一些空间。下面是我用来测试的mallocC中的malloc内存分配方案
#include <stdlib.h>
#include <string.h>
int main(){
char* a;
char* b;
a=malloc(2*sizeof(char));
b=malloc(2*sizeof(char));
memset(a,9,2);
memset(b,9,2);
return 0;
}
在下面的图片的右侧中间的(为了清楚而以新标签中打开图像),你可以看到内存内容的代码段; 0x804b008是地址指向通过变量'a'和0x804b018是变量'b'指向的内存。从0x804b00a 0x804b017到内存之间发生了什么?事情是即使我试图分配3*sizeof(char)
而不是2*sizeof(char)
字节的内存内存布局是一样的!那么,有什么我失踪?
除了下面的答案,值得指出sizeof(char)= 1的定义,所以没有一点乘以它。 –
@richardkettlewell这是正确的..但我已习惯于任何方式使用它的可读性 – nagavamsikrishna