【发布时间】:2011-06-25 15:26:45
【问题描述】:
据我所知
一般来说,指针必须是 由 malloc() 分配,并将被分配 堆,然后由 free() 取消分配;
和
非指针(int,char,float,etc..) 将是 自动分配给堆栈,并且 未分配,只要函数转到 返回
但是,从以下代码:
#include <stdio.h>
int main()
{
char *a;
a = "tesaja";
return 0;
}
a 将分配到哪里?堆栈还是堆?
【问题讨论】:
-
在您的示例中,“tesaja”被称为字符串文字。文本是不变的,也就是只读的,可以放在任何地方。它可以放在可执行区域并复制到可写内存中。实际位置取决于编译器设置和平台。
标签: c pointers char heap-memory stack-memory