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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在C中檢查可用的堆棧大小

在C中檢查可用的堆棧大小

C
明月笑刀無情 2019-10-11 10:05:25
我正在將MinGW與GCC 3.4.5(mingw-special vista r3)一起使用。我的C應(yīng)用程序使用了很多堆棧,所以我想知道是否有什么方法可以通過編程方式告訴您還剩下多少堆棧,以便在發(fā)現(xiàn)即將用完時(shí)可以完全解決這種情況。如果不是,您還可以通過其他什么方法來解決可能耗盡堆??臻g的問題?我不知道我要從多大的堆棧開始,因此也需要以編程方式識(shí)別它。
查看完整描述

3 回答

?
三國紛爭

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個(gè)贊

雷蒙·陳(The Old New Thing)對(duì)于此類問題有一個(gè)很好的答案:


如果需要詢問,可能是您做錯(cuò)了。


這是有關(guān)堆棧分配的Win32詳細(xì)信息:MSDN。


如果您認(rèn)為自己可能受到堆??臻g的限制,那么幾乎可以肯定會(huì)受到可用虛擬內(nèi)存的限制,在這種情況下,您將需要找到其他解決方案。


您到底想做什么?


查看完整回答
反對(duì) 回復(fù) 2019-10-11
?
江戶川亂折騰

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超5個(gè)贊

getrusage函數(shù)可獲取當(dāng)前用法。(請(qǐng)參見man getrusage)。


在getrlimitLinux中,將有助于獲取與堆棧大小RLIMIT_STACK參數(shù)。


#include <sys/resource.h>

int main (void)

{

  struct rlimit limit;


  getrlimit (RLIMIT_STACK, &limit);

  printf ("\nStack Limit = %ld and %ld max\n", limit.rlim_cur, limit.rlim_max);

}

請(qǐng)看一下man getrlimit。相同信息可以按行ulimit -s或ulimit -a堆棧大小行獲取。也看一下setrlimit可以設(shè)置限制的功能。但是,如其他答案中所述,如果您需要調(diào)整堆棧,那么您可能應(yīng)該重新考慮您的設(shè)計(jì)。如果要一個(gè)大數(shù)組,為什么不從堆中取出內(nèi)存呢?


查看完整回答
反對(duì) 回復(fù) 2019-10-11
?
慕村9548890

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊

將局部變量的地址從堆棧中取出將起作用。然后,在一個(gè)更嵌套的調(diào)用中,您可以減去另一個(gè)本地的地址,以找出它們之間的差異


size_t top_of_stack;


void Main()

{

  int x=0;

  top_of_stack = (size_t) &x;


  do_something_very_recursive(....)

}


size_t SizeOfStack()

{

  int x=0;

  return top_of_stack - (size_t) &x;

如果您的代碼是多線程的,則需要處理每個(gè)線程的top_of_stack變量。


查看完整回答
反對(duì) 回復(fù) 2019-10-11
  • 3 回答
  • 0 關(guān)注
  • 819 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)