-secure_malloc【Professional版のみ】
|
セキュリティ機能用malloc系ライブラリを生成します。
[指定形式]
通常のmalloc系ライブラリを生成します。
[詳細説明]
- | セキュリティ機能用malloc系ライブラリを生成します。 |
- | セキュリティ機能用malloc系ライブラリを使用する場合,次の操作を行った場合に__heap_chk_fail関数を呼び出します。 |
- | calloc,malloc,reallocで割り付けた領域以外のポインタをfree,reallocに渡す。 |
- | freeで開放した後のポインタを再度free,reallocに渡す。 |
- | calloc,malloc,reallocで割り当てた領域の外側(前後各2バイト)に何らかの値を書き込んだ後,割り当てた領域を指すポインタをfree,reallocに渡す。 |
- | __heap_chk_fail関数はユーザが定義する必要があり,動的メモリ管理の異常時に実行する処理を記述します。 |
- | __heap_chk_fail関数を定義する際には,次の項目に注意してください。 |
- | __heap_chk_fail関数は,返却値および引数の型がvoid型のfar関数とします。 |
void __far __heap_chk_fail(void);
- | __heap_chk_fail関数は,static関数にしないでください。 |
- | __heap_chk_fail関数内で再帰的にヒープ・メモリ領域の破壊を検出しないでください。 |
- | セキュリティ機能用のcalloc,malloc,およびreallocは,領域外への書き込みを検出するために前後各2バイト余分に領域を割り当てます。このため,通常より多くヒープ・メモリ領域を消費します。 |
[注意事項]
- | ヒープ・メモリ領域のデフォルト・サイズは0x100バイトです。 |
- | ヒープ・メモリ領域を変更する場合は,配列_REL_sysheapを定義し,配列のサイズを変数_REL_sizeof_sysheapに設定してください。 |
【ヒープ・メモリ領域設定例】
#include <stddef.h>
#define SIZEOF_HEAP 0x200
int _REL_sysheap[SIZEOF_HEAP / sizeof(int)];
size_t _REL_sizeof_sysheap = SIZEOF_HEAP;
|
備考 | 配列_REL_sysheapは,偶数番地に配置してください。 |