【发布时间】:2011-09-06 11:37:41
【问题描述】:
正在查看以下程序,但不确定内存是如何分配的以及为什么:
void function() {
char text1[] = "SomeText";
const char* text2 = "Some Text";
char *text = (char*) malloc(strlen("Some Text") + 1 );
}
在上面的代码中,最后一个显然是在堆中。但是,据我了解,text2 在程序的数据段中,text1 可能在堆栈上。还是我的假设是错误的?这里正确的假设是什么?这个编译器依赖吗?
【问题讨论】:
-
+1 : 非常有趣的问题
-
你明白指针和它所指向的数据的区别吗?
-
是的,n0rd,但是这个让我印象深刻,因为它似乎有多种可能的选择..
-
这是一个很好的面试问题:)
-
text1、text2和text本身就在堆栈中。但是"..."s 在文本段中。从malloc获得的分配内存在堆中。
标签: c++ heap-memory stack-memory