検索

ホームページ  >  に質問  >  本文

c++ - win764位环境下,我用GCC为什么指针占8个字节,而long是4个字节?

我用的工具是CFree套了个gcc的壳,写代码的时候偶然发现,sizeof指针是字节,而long是4字节。

且跑一个malloc最大申请空间代码的测试程序得到结果是1.99g,所以说明这个程序应该还是32位的程序,

那么为什么指针的sizeof是8个字呢 ?

PHPzPHPz2766日前1177

全員に返信(1)返信します

  • ringa_lee

    ringa_lee2017-04-17 15:40:46

    int long short の具体的なバイト数はコンパイラの実装によって異なります。絶対的な数はありません。

    sizeof ポインターが必要な場合は、必ず sizeof(void*)

    を使用してください。

    MinGW は LLP64、long は 32 ビットです。

    malloc を実行するときに、パラメータが signed int で表されている場合、2Gb メモリを申請するときに 2^31 を超える数値を signed int に入力すると、データ オーバーフローにより malloc が失敗する可能性があることに注意してください。 size_t

    を使用する必要があります

    プログラムが何ビットなのか知りたい場合は、タスク マネージャーを開くと、32 ビット プロセスの後ろに *32 マークが表示されます。

    返事
    0
  • キャンセル返事