簡體   English   中英

C ++堆棧溢出-Visual Studio 2008

[英]C++ stack overflow - visual studio 2008

我聲明並初始化了一個具有[100] [1000] [1000]個char元素(100MB)的數組,但第一次並沒有說到堆棧溢出。但是當我在一段時間后運行它時,它拋出了堆棧溢出異常! 我在項目選項->鏈接器->系統中將-Stack Reserve Size-增加到200,000,000,但沒有成功! 我正在使用2GB Ram。如何避免堆棧溢出。

停止使用堆棧! 使用堆內存!

您是否需要分配這么多堆棧內存的原因? 這可能是您算法中的缺陷,而不是編譯器的缺陷。

默認堆棧大小不是鏈接器選項,而是通過許多深奧的平台特定機制控制的。

在Windows上,可以在調用CreateThread時對其進行控制。 在Unix上也有pthread attr機制可以做到這一點。

在非線程代碼中,在Unix上,有ulimit設置可以控制此設置,但可以受平台限制的限制。 例如,在AIX中的32位進程中,堆棧和堆在第二段中一起增長,因此兩者的最大容量為256Mb(一旦命中,就會充滿樂趣)。

可能有一些平台機制可用於控制此機制(例如ulimit),但是使用堆的建議可能是謹慎的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM