1. ホーム
  2. c++

[解決済み] 未割り当てのメモリが0xCCと表示されるのはなぜですか?重複

2022-02-12 21:08:15

質問内容

なぜ、初期化していないメモリーが 0xCC ?

メモリに設定する 0xCC はパフォーマンスを低下させるので、このバイトでメモリを埋める理由が必要です。

解決方法は?

CRT内部:デバッグヒープ管理

Visual Studioでプログラムのデバッグビルドをコンパイルして デバッガで実行すると、メモリが割り当てられたり というようなおかしな値になっています。

0xCC /GZオプションでコンパイルした場合、未初期化の の変数が自動的にこの値(バイトレベル)に割り当てられます。

Wiki上のマジックナンバー :

CCCCCCC マイクロソフトのC++デバッグランタイムライブラリで使用され、次のようにマークされます。 未初期化スタックメモリ

Visual StudioのCRTソースで。 \VC\crt\src\malloc.h :

#define _ALLOCA_S_STACK_MARKER  0xCCCC

// ...

#undef _malloca
#define _malloca(size) \
__pragma(warning(suppress: 6255)) \
    ((((size) + _ALLOCA_S_MARKER_SIZE) <= _ALLOCA_S_THRESHOLD) ? \
        _MarkAllocaS(_alloca((size) + _ALLOCA_S_MARKER_SIZE), _ALLOCA_S_STACK_MARKER) : \
        _MarkAllocaS(malloc((size) + _ALLOCA_S_MARKER_SIZE), _ALLOCA_S_HEAP_MARKER))