課程
/后端開發
/C++
/C++遠征之離港篇
以前一直都沒有怎么做內存管理,沒有申請直接用的,問一下在什么情況下要進行內存管理呢?
2017-02-01
源自:C++遠征之離港篇 5-2
正在回答
使用new關鍵字是申請堆空間(heap),堆空間比棧空間(stack)容量大,一般局部變量使用??臻g,占用空間較大的變量用堆空間。菜鳥回答,僅供參考。
碰碰碰氣球 提問者
//僅是為了說明,代碼屬于不全代碼。
#include <iostream>//代碼區
using namespace std;//代碼區
void Reverse( char datStr[], char sreStr[] )//代碼區
{
int len = strlen(sreStr);//局部變量→棧區
static int j=0;//靜態變量→全局數據區 ? ? //static 靜態的
for(int i=len-1; i<=0;i-- )
datStr[j]=sreStr[i];
j++;
};
int a = 0;//全局變量 → 全局數據區
int main()//代碼區
{?
char sre[100]={0};
a = 1;//(全局變量) 可訪問
j = 1;//(靜態局部變量)不可訪問
system("pause");
return 0; ??
};?
//局部變量:每次執行函數的時候,系統都會在棧區分配一個空間
//每次函數結執行完之后,局部變量(空間)會被銷毀,把這個空間還給系統。
//全局變量:不會被銷毀永遠存在,直到我們的應用程序運行結束。
//全局變量與靜態局部變量的區別:
//全局變量:可以在任何地方訪問。
//靜態局部變量:在聲明的函數體內進行訪問.
?用New分配一個變量時,不用時必須用delete,否則在堆中不會被釋放,占用內存,導致崩潰.
delete 刪除 ,后面+地址(指針)
當我們分配的是數組是,釋放格式為:
delete []? p;
?在堆中創建一個對象數組,C++要求對象必須有一個默認的構造函數.
應該能看懂 堆和棧區的區別吧~new出來的才進入堆區
靜態局部變量還有更深的 不說了
舉報
C++掃清通往面向對象的最后一道障礙,將所有知識點融會貫通
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-02-02
使用new關鍵字是申請堆空間(heap),堆空間比棧空間(stack)容量大,一般局部變量使用??臻g,占用空間較大的變量用堆空間。菜鳥回答,僅供參考。
2017-04-22
//僅是為了說明,代碼屬于不全代碼。
#include <iostream>//代碼區
using namespace std;//代碼區
void Reverse( char datStr[], char sreStr[] )//代碼區
{
int len = strlen(sreStr);//局部變量→棧區
static int j=0;//靜態變量→全局數據區 ? ? //static 靜態的
for(int i=len-1; i<=0;i-- )
{
datStr[j]=sreStr[i];
j++;
};
};
int a = 0;//全局變量 → 全局數據區
int main()//代碼區
{?
char sre[100]={0};
a = 1;//(全局變量) 可訪問
j = 1;//(靜態局部變量)不可訪問
system("pause");
return 0; ??
};?
//局部變量:每次執行函數的時候,系統都會在棧區分配一個空間
//每次函數結執行完之后,局部變量(空間)會被銷毀,把這個空間還給系統。
//全局變量:不會被銷毀永遠存在,直到我們的應用程序運行結束。
//全局變量與靜態局部變量的區別:
//全局變量:可以在任何地方訪問。
//靜態局部變量:在聲明的函數體內進行訪問.
?用New分配一個變量時,不用時必須用delete,否則在堆中不會被釋放,占用內存,導致崩潰.
delete 刪除 ,后面+地址(指針)
當我們分配的是數組是,釋放格式為:
delete []? p;
?在堆中創建一個對象數組,C++要求對象必須有一個默認的構造函數.
應該能看懂 堆和棧區的區別吧~new出來的才進入堆區
靜態局部變量還有更深的 不說了