第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

大數(shù)組大小的故障分割

大數(shù)組大小的故障分割

C++ C
HUH函數(shù) 2019-05-30 16:29:57
大數(shù)組大小的故障分割下面的代碼在2GB機器上運行時給了我一個分段錯誤,但在4GB機器上工作。int main(){    int c[1000000];    cout << "done\n";    return 0;}數(shù)組的大小只有4MB。在c+中可以使用的數(shù)組的大小是否有限制?
查看完整描述

3 回答

?
達令說

TA貢獻1821條經驗 獲得超6個贊

在C或C+中,通常在堆棧上分配本地對象。在堆棧上分配一個大數(shù)組,超出堆棧所能處理的范圍,因此您將獲得一個StackOverflow

不要在堆棧上本地分配它,而是使用其他地方。這可以通過以下兩種方法來實現(xiàn):全球或者將其分配到全局。如果不使用任何其他編譯單元,則可以使用全局變量。為了確保這不是偶然發(fā)生的,添加一個靜態(tài)存儲說明符,否則只需使用堆。

這將在BSS段中分配,BSS段是堆的一部分:

static int c[1000000];int main(){
   cout << "done\n";
   return 0;}

這將在數(shù)據(jù)段中分配,數(shù)據(jù)段也是堆的一部分:

int c[1000000] = {};int main(){
   cout << "done\n";
   return 0;}

這將在堆中某個未指定的位置分配:

int main(){
   int* c = new int[1000000];
   cout << "done\n";
   return 0;}


查看完整回答
反對 回復 2019-05-30
?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

此外,如果在大多數(shù)UNIX和Linux系統(tǒng)中運行,可以通過以下命令臨時增加堆棧大?。?/trans>

ulimit -s unlimited

但是要小心,記憶是一種有限的資源,強大的力量帶來了巨大的責任:)


查看完整回答
反對 回復 2019-05-30
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

這里可能只是堆棧溢出。數(shù)組太大,無法容納程序的堆棧地址空間。

如果您在堆上分配數(shù)組,假設您的機器有足夠的內存,您應該沒事。

int* array = new int[1000000];

但要記住這需要你delete[]數(shù)組。更好的解決辦法是使用std::vector<int>并將其調整為1000000元素。


查看完整回答
反對 回復 2019-05-30
  • 3 回答
  • 0 關注
  • 445 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號