附件里是从网上找的一篇关于C语言中内存管理的文章。
char amessage[]="hello world";
char *pmessage="hello world";
上面两种定义字符串的方式有着非常大的区别,第一个区别就是amessage[]是一个字符数组,而pmessage是一个指针。第二个区别是定义amessage的时候会拷贝代码区中的“hello world"到它自己申请的堆栈空间去,而上面定义的pmessage指向的是代码区的一段内存”hello world“,是只读的,如果程序中包含如下的代码:
char *pmessage="hello world";
*pmessage=65;
在运行中会报错,因为pmessage指向的内存是只读的,不允许修改。(在linux下可以编译通过)。
文章评论(0条评论)
登录后参与讨论