我今天在C语言中了解了动态内存分配。我了解了如何在需要打印句子时使用malloc()
中的stdlib.h
将内存分配给char数组。但是后来我看到我可以存储更多的字节,然后再分配。这是我的完整代码。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int i;
char *foo;
foo = (char*)malloc(20);
for (i=0;i<30;i++)
{
foo[i]='a';
printf("\n%d) %c",i+1,foo[i]);
}
return 0;
}
输出
1) a
2) a
3) a
4) a
5) a
6) a
7) a
8) a
9) a
10) a
11) a
12) a
13) a
14) a
15) a
16) a
17) a
18) a
19) a
20) a
21) a
22) a
23) a
24) a
25) a
26) a
27) a
28) a
29) a
30) a
如您所见,我给了foo
20个字节,但能够在其中存储30个字节。到底是怎么回事?我误解了malloc()
吗?