我正在看以下程序,不确定内存是如何分配的以及为什么会这样:
void function() {
char text1[] = "SomeText";
const char* text2 = "Some Text";
char *text = (char*) malloc(strlen("Some Text") + 1 );
}
在上面的代码中,最后一个显然在堆上。然而,据我所知,text2
在程序的数据段中,而text1
可能在栈上。或者我的假设是错误的?这里的正确假设是什么?这是否取决于编译器?
text1
,text2
和text
本身都在栈上。但是"..."
在文本段中。从malloc
获得的分配内存位于堆中。 - rosshjb