c语言内存分配与指针讲解
1、下面列出C语言可执行程序的基本情况(Linux 2.6环境/GCC4.0)。

3、代码区顾名思义就是存放代码的,里面的内容是不可以修改的。例如你定义了一个筐毙险裆变量char *buff = "锾攒揉敫abcdef";这个char型指针指向了代码区,这个指针里面的数据只可以被读取不可以别修改,因为指针指向了代码区,如果你继续往这个指针里面放东西,会报段错误。例如:buff[1] = 'a',这样会报错,段错误。因为上面已经将buff指向了代码区,代码区的数据是不可以改变的,但是你想要给buff[1]赋值,这时编译的时候不会报错,但是运行的时候会报段错误,这种错误对于初学者来说相当恶心,如果报段错误建议给我使用gdb调试。段错误大部分是因为内存使用错误。

5、堆区:说白了就是由程序员分配一块内存,然后往这娄壶狩匈块内存中写数据,栈区是系统分配内存然后往里面写数据,栈区是有系统释放,但是堆区的内存必须有程序员释放,不然会造成内存泄露(后果相当挣婊词丬严重,会造成死机现象)。C++中由new和delete来分配和释放,C中由malloc和free来分配和释放。

7、总结:看下图:

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:92
阅读量:55
阅读量:67
阅读量:49
阅读量:26