1.请看一下这一段C++代码,如果编译后程序在windows下运行,则一下说话正确的是?
题目网址:点击打开链接
char*p1 = “123456”;
char*p2 = (char*)malloc(10);
解答:选AC
正确的解释为:
1.p1和p2都是指针,而指针本身是存在栈中的。
2.“123456”是常量字符串,本身存放在常量区,指针p1中存放的是 “123456”在常量区中的地址,指针p1本身存 放在栈区。
3.malloc从堆区分配了10个字节的内存区域,并把这块内存区域的首地址赋给了指针p2,即指针p2中存放是只是 一个指向堆区的地址,而指针p2本身是存放在栈区。所以p2指向的10个字节内存是存放在堆中的。
4.生长方向:对于堆来讲,生长方向是向上的,也就是向着内存地址增加的方向;对于栈来讲,他的生长方向是向 下的,是向着内存地址减小的方向增长。