C/C++内存分配

来源:互联网 发布:德华软件 编辑:程序博客网 时间:2024/04/26 15:38

#include <iostream>
using namespace std;

void main()
{
 char *p,*q;
 p = "abcde";
 q = p + 3;
 *q = 't';
 cout<<p<<endl;
 cout<<q<<endl;
}

两种语言编译都可以通过

当执行到

 *q = 't';

时,C++程序出现内存访问错误,C程序可以运行,并且把第四个内存单元置换为t

C++编译器在编译过程中,给"abcde"分配了常量区的内存单元,常量区的内存单元在运行时无法修改,因此试图对常量区的操作会产生异常。