C 中,new TYPE SIZE 中,SIZE的最大值由什麼決定?如何計算?

時間 2021-06-01 02:50:35

1樓:向陽

32位程式最多是2GB(呼叫OS的記憶體分配API的情況下),正常情況1GB就沒了,這裡的2G/1G都是整個程式占用的記憶體大小。這是我自己電腦上的情況。所以我懷疑別處分配的記憶體加上這幾百萬 * 32就超過限制了,換x64 Release看看如何

尺寸當然是sizeof(TYPE) * SIZE,實際會比這個結果大一小點點

2樓:d41d8c

3樓:

在這裡,我預設你用的new是operator new,而不是placement new這種特殊情況。

那麼,你能new的記憶體上限,一般和物理記憶體關係最大,但這並不是唯一影響因素,因為很多作業系統有virtual memory機制作為記憶體擴充套件,即使物理記憶體已經到達極限,仍然可以用硬碟空間作為緩衝分配記憶體,但在某些嵌入式linux系統上,因為沒有這種機制,這種情況就不適用。

同樣,32位系統和64位系統,也會影響記憶體分配的上限。

想知道當前系統下記憶體分配的上限,完全可以自己試一試,當new丟擲std::bad_alloc異常的時候,往往就是作業系統分配記憶體的極限。

C 中 怎麼編寫

樓主別編故事裝逼了 樓主意思是程式設計計算pi 可以用蒙特卡洛思想,大概就是 產生大量0,1之間的隨機數對。每乙個對代表乙個點。然後統計落在單位圓中點的個數 然後就可以估算pi了 三生翰旋醉夢 一些數學常量,比如 已經在中定義好了,可以開啟巨集開關 USE MATH DEFINES直接使用,即 de...

C 中 類的vector容器中如何通過類中的成員來查詢到含這個成員的類?不一定只有乙個類含該元素?

黃亮anthony 題目很模糊,不確認題目的含義是否如此,我還是寫個答案吧,如果題主看到,請修改一下問題。成員找自己的類是指這樣的情況 struct A A some 10 int pa some 2 a A pA A char pa offsetof A,a offsetof的原理大體為這樣 ch...

2020 09 26 請問rust中的 和c 中的 有哪些區別?

被子飛了 這個問題實質上是要分清 Rust 和 C 各自的 指標 和 引用 型別。先來看 C C 的指標沿襲自 C 語言,就是乙個記憶體位址,其型別決定了編譯器如何操作該位址上的資料 C 的引用則是語義上的創新,建立引用相當於指定物件別名,在函式傳參的情況下仍然相當於傳指標,但由編譯器自動幫你執行各...