MacBook Pro に割り当てることができるメモリの最大容量はどれくらいですか? [重複] 質問する

MacBook Pro に割り当てることができるメモリの最大容量はどれくらいですか? [重複] 質問する

割り当てが失敗する前に、どれだけのメモリを割り当てることができるかを調べようとしています。

この単純な C++ コードは、バッファ (サイズ 1024 バイト) を割り当て、バッファの最後の 5 文字に割り当て、レポートし、バッファを削除します。次に、バッファのサイズを 2 倍にして、失敗するまで繰り返します。

何か見落としがない限り、コードは MacBook Pro でエラーが発生する前に最大 65 テラバイトのメモリを割り当てることができます。これは可能なのでしょうか? マシンに搭載されているメモリよりも多くのメモリを割り当てることができるのはなぜでしょうか? 何か単純なことを見落としているに違いありません。

int main(int argc, char *argv[])
{
        long long size=1024;
        long cnt=0;
        while (true)
        {
                char *buffer = new char[size];
                // Assume the alloc succeeded. We are looking for the failure after all.

                // Try to write to the allocated memory, may fail
                buffer[size-5] = 'T';
                buffer[size-4] = 'e';
                buffer[size-3] = 's';
                buffer[size-2] = 't';
                buffer[size-1] = '\0';

                // report
                if (cnt<10)
                        cout << "size[" << cnt << "]: " << (size/1024.) << "Kb ";
                else if (cnt<20)
                        cout << "size[" << cnt << "]: " << (size/1024./1024.) << "Mb ";
                else
                        cout << "size[" << cnt << "]: " << (size/1024./1024./1024.) << "Gi ";
                cout << "addr: 0x" << (long)buffer << " ";
                cout << "str: " << &buffer[size-5] << "\n";

                // cleanup
                delete [] buffer;

                // double size and continue
                size *= 2;
                cnt++;
        }
        return 0;
}

ベストアンサー1

メモリを要求すると、オペレーティングシステムは実際にはメモリを要求しない権利を留保します。与える実際に使用するまでその記憶は残りません。

ここで起きているのはまさにこれです。5 バイトしか使用しません。1980 年代の私の ZX81 はそれを処理できました。

おすすめ記事