在看下面的程序并不能确保内存的分配方式和原因:堆VS数据段VS堆栈分配
void function() {
char text1[] = "SomeText";
char* text2 = "Some Text";
char *text = (char*) malloc(strlen("Some Text") + 1);
}
在上面的代码中,最后一个是明显的堆。但是,据我了解,text2在程序的数据段中,而text1可能在堆栈中。或者我的假设是错误的?这里有什么正确的假设?这个编译器是否依赖?
感谢
+1:非常符合问题 – Heisenbug 2011-06-01 16:57:15
您是否了解指针与它指向的数据之间的区别? – n0rd 2011-06-01 17:09:17
是的n0rd,但是这一个打击我,因为它似乎有这样一个有多个可能的选择.. – Kiran 2011-06-01 17:47:56