我們都知道,c/c++程序的內(nèi)存分配,有這樣幾個(gè)存儲(chǔ)區(qū)。
全局/靜態(tài)數(shù)據(jù)區(qū):存儲(chǔ)全局變量,和靜態(tài)變量static聲明的變量
常量存儲(chǔ)區(qū):存儲(chǔ)常量,如char *s=\"abcde\"; 或者 const int i =10;代碼區(qū):這個(gè)不說(shuō)了。代碼放的地兒棧:臨時(shí)變量,參數(shù)等,有大小限制,vc6/7: 1M
考試大提示: 堆: 用戶自己維護(hù)的空間,內(nèi)存使用需要自己申請(qǐng),自己釋放。大小基本不限(4G)
example:
#include
using namespace std;
int global = 100; //全局/靜態(tài)區(qū)
const int N = 10; //常量區(qū)
int main()
{
static int a = 0; //全局/靜態(tài)區(qū)
char arr[100]=\"test\";//arr分配在棧上,\"test\"分配到常量區(qū),還有一個(gè)副本在棧上
char *s = \"abcde\";//s分配在棧上,\"abcde\"分配在常量區(qū)
char*str = NULL; //str分配在棧上
str = new char[10];//str所指向的空間分配在堆上
delete []str;
return 0;
}
全局/靜態(tài)數(shù)據(jù)區(qū):存儲(chǔ)全局變量,和靜態(tài)變量static聲明的變量
常量存儲(chǔ)區(qū):存儲(chǔ)常量,如char *s=\"abcde\"; 或者 const int i =10;代碼區(qū):這個(gè)不說(shuō)了。代碼放的地兒棧:臨時(shí)變量,參數(shù)等,有大小限制,vc6/7: 1M
考試大提示: 堆: 用戶自己維護(hù)的空間,內(nèi)存使用需要自己申請(qǐng),自己釋放。大小基本不限(4G)
example:
#include
using namespace std;
int global = 100; //全局/靜態(tài)區(qū)
const int N = 10; //常量區(qū)
int main()
{
static int a = 0; //全局/靜態(tài)區(qū)
char arr[100]=\"test\";//arr分配在棧上,\"test\"分配到常量區(qū),還有一個(gè)副本在棧上
char *s = \"abcde\";//s分配在棧上,\"abcde\"分配在常量區(qū)
char*str = NULL; //str分配在棧上
str = new char[10];//str所指向的空間分配在堆上
delete []str;
return 0;
}