new-operator

    2熱度

    3回答

    我有一個問題,我不能包裹我的頭。 我正在寫我自己的容器,它或多或少像std::vector<T>,我不知道如何解決分配對象的內存問題。 比方說,比如我寫圍繞數組的包裝,並希望這樣的分配數據: T* cArray = new T[size]; cArray[index] = std::move(obj); 如果OBJ沒有不帶任何參數生病得到一個默認的構造函數錯誤:「類:沒有適當的默認構造函數可

    0熱度

    1回答

    我遇到了我認爲我的C++代碼中的奇怪,並且對原因感到好奇。我已經爲類Object重載了新的值,並將返回的值打印到控制檯。我也在Object的構造函數中打印這個值。這些值不匹配(它們相差一個字)。這是預期的嗎? void* Object::operator new(size_t size) { void* startAddress = ... std::cout <

    1熱度

    1回答

    經過多次試驗我已經成功與新表達分配指針的3 int秒的陣列。在下面的代碼片段中,我首先展示了這個指針在堆棧中的用法,然後在多次嘗試之後顯示堆分配的位置。 #include <iostream> int main() { // First, pointer p to an array of 3 int's in the stack. int a[3] = { 10, 11,

    1熱度

    2回答

    我必須爲我的單元測試導致bad_alloc(基本上,對於100%的代碼覆蓋率,我無法更改某些函數)。我該怎麼辦? 這是我的代碼示例。我必須在這裏導致bad_alloc。 bool insert(const Value& v) { Value * new_value; try { new_value = new Value; } catch (st

    6熱度

    1回答

    以下兩段是從N4140複製的(重點是我的)。 §5.3.4/ 11: 當新表達調用的分配功能和 分配具有不被擴展,所述新表達經過 請求分配函數的空間量爲std::size_t類型的第一個 參數。該論據應不小於正在創建的對象的大小 ;它可能大於僅在對象是數組時才創建的對象的大小 。對於char和unsigned char 陣列中,新表達的 結果和由 分配函數返回的地址之間的差應是任何對象類型,其最嚴

    2熱度

    2回答

    當內存被動態分配時,它是否存儲在堆中,而不管它在哪裏被聲明?例如,如果在main()內聲明以下代碼行() int * p = new int [100000]; 將內存從堆棧或堆棧分配? 如果在全局範圍內做出同樣的聲明,將從堆中獲取內存。但我讀到動態分配的內存存儲在堆中,局部變量存儲在堆棧中。因此,當上面的代碼行從主內部執行,這使得它成爲一個局部變量,將從堆棧或堆獲取內存?

    1熱度

    1回答

    樣本函數聲明函數: function Rectangle(height, width) { this.height = height; this.width = width; this.calcArea = function() { return this.height * this.width; }; // put our perim

    2熱度

    1回答

    #include <iostream> using namespace std; int main() { unsigned long maxindex = 2147483647ul+2ul; char* p = new char[maxindex]; for(int i = 0; i < maxindex; i++) { p[i]

    0熱度

    6回答

    我是初學者,這個問題總讓我困惑。我的學術書說新操作員返回一個地址。但在許多教程中,我發現新的返回指向特定地址的指針。拿這個: char *name = new char[x]; 什麼值分配給這裏的名稱,動態分配的地址或指向動態分配的字符的指針? 謝謝

    1熱度

    3回答

    我正在開發一個不使用異常的項目,並且應該保持這種狀態。 爲了使用我自己的內存管理器,我重載了(overrid會更準確一些)new操作符。在我的內存管理器中,如果分配失敗 - 返回NULL。 現在,雖然新運算符返回NULL,但構造函數正在調用,然後我得到一個seg故障,因爲我沒有分配內存。 我想要的功能是,如果新的操作符返回NULL,那麼不應該調用構造函數(並且之後我會檢查對象是否成功初始化)。 我