一个简单的内存分配例子
生活随笔
收集整理的這篇文章主要介紹了
一个简单的内存分配例子
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
來看一個網上很流行的經典例子:
main.cpp
int a = 0; 全局初始化區
char *p1; 全局未初始化區
main()
{
int b; 棧
char s[] = "abc"; 棧
char *p2; 棧
char *p3 = "123456"; 123456\0在常量區,p3在棧上。
static int c =0; 全局(靜態)初始化區
p1 = (char *)malloc(10); 堆
p2 = (char *)malloc(20); 堆
}
堆和棧的第一個區別就是申請方式不同:棧(英文名稱是stack)是系統自動分配空間的,例如我們定義一個 char a;系統會自動在棧上為其開辟空間。而堆(英文名稱是heap)則是程序員根據需要自己申請的空間,例如malloc(10);開辟十個字節的空間。由于棧上的空間是自動分配自動回收的,所以棧上的數據的生存周期只是在函數的運行過程中,運行后就釋放掉,不可以再訪問。而堆上的數據只要程序員不釋放空間,就一直可以訪問到,不過缺點是一旦忘記釋放會造成內存泄露。
總結
以上是生活随笔為你收集整理的一个简单的内存分配例子的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Cygwin实现vlc 1.0.5的
- 下一篇: 认识高清视频编码(MPEG、H.264、