char str[10]
和char *str = (char *) malloc(10)
之间的区别是什么?据我所知,他们俩都没有为char
的数组分配10个字节?
答案 0 :(得分:1)
char str[10];
全局(静态)范围 - 在.data
或.bss
段中分配(取决于初始化。在程序终止之前无法释放。
本地(自动)范围 - 通常(大多数实现,但C标准不会违反堆栈上分配的"堆栈")。程序离开范围时自动释放。
2
char *str = malloc(10);
在堆上分配。需要使用free
函数
答案 1 :(得分:-1)
char str[10]
在堆栈上分配内存。 char *str = (char *) malloc(10)
在堆上分配内存。堆栈和堆存储在计算机的RAM中。 More information about stack and heap