我对malloc()函数有些困惑。
如果sizeof(char)
是1字节
,并且malloc()
函数接受N个字节的参数来分配内存,那么如果我这样做:
char* buffer = malloc(3);
我分配了一个可以存储3个字符的缓冲区,对吗?
char* s = malloc(3);
int i = 0;
while(i < 1024) { s[i] = 'b'; i++; }
s[i++] = '$';
s[i] = '\0';
printf("%s\n",s);
它运行良好,并将1024个s存储在s中。
bbbb[...]$
为什么上面的代码不会导致缓冲区溢出?有人能解释一下吗?