回覆列表
  • 1 # 使用者5036153402330

    我在macOS x64(8G物理記憶體)上測試了一下,malloc應該是如上說的分配了虛擬記憶體,而作業系統並沒有分配物理空間。

    理論上來說,每個應用程式都應該有2^64bit(大約17179869184.0Gbit)的虛擬記憶體空間。

    我一次性new分配了50000G竟然成功了,不是多次分配。

    測試用例,

    輸出結果,

    我發現new的引數是size_t也就是unsigned long,當我嘗試著分配更大(擴大10倍,50000*10G)的虛擬記憶體的時候,出錯了。

    a.out(44968,0x7fff9f4dc380) malloc: *** mach_vm_map(size=536870912000000) failed (error code=3)

    *** error: can"t allocate region

    *** set a breakpoint in malloc_error_break to debug

    libc++abi.dylib: terminating with uncaught exception of type std::bad_alloc: std::bad_alloc

    Abort trap: 6

  • 中秋節和大豐收的關聯?
  • 吸菸就會患肺癌嗎?