bad-alloc

    3熱度

    2回答

    在Linux上,如果內存不足,malloc不一定會返回空指針。如果你真的內存不足,你可能會得到一個指針,然後讓OOM殺手開始進食。對於C++的操作符new也是如此,或者你會得到bad_alloc異常嗎?

    3熱度

    1回答

    下午好女人和男人。所以,這不是我犯錯的日子。在C++中實現Mergesort(不是就地),我在代碼中遇到了麻煩,不知道爲什麼。 mergeSort()函數的倒數第二行將merge()的結果分配給一個整數,result向量。這行(實際分配,而不是函數)拋出一個bad_alloc錯誤,我不知道爲什麼。 互聯網暗示bad_alloc大多是由於內存不足造成的錯誤,但這不可能是這種情況,因爲它第一次被調用的

    26熱度

    5回答

    我的程序中有一個相當嚴重的錯誤 - 偶爾會調用new()拋出bad_alloc。 從文檔我可以找到關於bad_alloc的,它似乎被拋出這些原因: 當計算機運行的內存(這肯定是不會發生的,我有4GB的內存,程序在使用少於5MB(在taskmanager中檢查)時拋出bad_alloc,而沒有任何嚴重的後臺運行)。 如果內存變得過於分散,無法分配新塊(這再次不太可能 - 我分配的最大塊大小約爲1KB

    0熱度

    4回答

    我有以下問題(?): 在Windows機器上的程序運行(32位,3.1GB的內存,無論是VC++ 2008和MinGW編譯代碼)失敗,拋出一個bad_alloc異常(在分配大約1.2Gb後;嘗試分配一個900萬雙打的矢量,即大約75Mb的矢量時拋出異常),並有大量RAM仍然可用(至少根據任務管理器)。 在Linux機器上運行的相同程序(32位,4Gb內存; 32位,2Gb內存)運行良好,峯值內存使

    7熱度

    3回答

    我有一個程序出現故障: terminate called after throwing an instance of 'std::bad_alloc' what(): St9bad_alloc 我想這件事情做malloc/free,但我不知道是哪一個。 我可以在gdb中設置哪個斷點,以便在錯誤上斷開以便我可以查看堆棧跟蹤? 該程序是C和C++的組合,用gcc 3.4.2編譯。

    20熱度

    4回答

    我有這樣的代碼.. CEngineLayer::CEngineLayer(void) { // Incoming creation of layers. Wrapping all of this in a try/catch block is // not helpful if logging of errors will happen. logger = new

    11熱度

    3回答

    我有一個程序,實現幾個啓發式搜索算法和幾個域,旨在通過實驗評估各種算法。該程序使用C++編寫,使用GNU工具鏈構建,並在64位Ubuntu系統上運行。當我運行我的實驗時,我使用bash的ulimit命令來限制進程可以使用的虛擬內存量,以便我的測試系統不會開始交換。 某些算法/測試例組合擊中我已定義的內存限制。大多數情況下,程序拋出一個std :: bad_alloc異常,該異常由默認處理程序打印,

    2熱度

    2回答

    我知道這樣一個new(std::no_throw)將設置指針NULL,如果它失敗了。 我也知道,一個正常new將拋出一個異常std::bad_alloc如果它失敗了。 將正常new指針也設置爲NULL如果它拋出?或者我應該將它設置爲catch()塊中的NULL?

    0熱度

    4回答

    我的C++/openGL程序有問題。 在代碼的一些點,像這樣的(這是一個構造函數): MyObject(MyMesh * m, MyTexture* t, float *c=NULL, float *sr=NULL, int sh=100){ texture=t; mesh=m; subObjects=NULL; texCoords=NULL; if (texture!=NULL){

    0熱度

    4回答

    我已經調試過我的other problem回到MyMesh構造函數。在此代碼中: if (hollow) { numTriangles = n*8; triangles=new MyTriangle[numTriangles]; if (smooth) numSurfacePoints=n*8; else numSurfacePoints=n*12;