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