① 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如,全局变量、static变量及字符串常量。这部分存储区是在程序编译阶段已分配好,在整个程序运行过程中始终存在,用于存储全局变量、静态变量及字符串常量等。其中,字符串常量的存储区域是不可修改的内存区域,如下面的这段代码会导致程序运行中断: ②从栈上创建。在执行函数时,函数局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。
#include <iostream> usingnamespace std; int main() { //指向一个字符串常量 char* pLocalString ="this is a test"; /**//* 下面这句提示错误:error C2440: '=' : * cannot convert from 'const char' to 'char *' * 试图修改不可修改的内存区 */ pLocalString='#'; //cout<<pLocalString<<endl; return0; }