我正在查看以下程序,但不确定内存是如何分配的以及为什么:
void function() {
char text1[] = "SomeText";
const char* text2 = "Some Text";
char *text = (char*) malloc(strlen("Some Text") + 1 );
}
在上面的代码中,最后一个显然是在堆中。但是,据我了解text2
,它位于程序的数据段中,并且text1
可能位于堆栈中。还是我的假设是错误的?这里正确的假设是什么?这个编译器依赖吗?