_strdup_dbg
, _wcsdup_dbg
malloc
のデバッグ バージョンを使用する_strdup
と_wcsdup
のバージョン。
構文
char *_strdup_dbg(
const char *strSource,
int blockType,
const char *filename,
int linenumber
);
wchar_t *_wcsdup_dbg(
const wchar_t *strSource,
int blockType,
const char *filename,
int linenumber
);
パラメーター
strSource
NULL で終わる元の文字列。
blockType
要求するメモリ ブロックの種類。_CLIENT_BLOCK
または _NORMAL_BLOCK
。
filename
割り当て操作を要求したソース ファイル名へのポインターまたは NULL
。
linenumber
割り当て操作が要求されたソース ファイル内の行番号または NULL
。
戻り値
これらの各関数は、コピーされた文字列の格納場所へのポインターを返すか、ストレージを割り当てることができない場合は NULL
します。
解説
_strdup_dbg
および _wcsdup_dbg
関数は _strdup
および _wcsdup
と同じものですが、_DEBUG
が定義されている場合に、これらの関数は複製された文字列にメモリを割り当てるために malloc
および _malloc_dbg
のデバッグ バージョンを使用する点が異なります。 _malloc_dbg
のデバッグ機能については、_malloc_dbg
を参照してください。
ほとんどの場合、これらの関数を明示的に呼び出す必要はありません。 代わりに、フラグ _CRTDBG_MAP_ALLOC
を定義することができます。 _CRTDBG_MAP_ALLOC
が定義されている場合、_strdup
および _wcsdup
の呼び出しはそれぞれ _strdup_dbg
および _wcsdup_dbg
にマップし直され、blockType
が _NORMAL_BLOCK
に設定されます。 したがって、ヒープ ブロックを _CLIENT_BLOCK
としてマークしない限り、これらの関数を明示的に呼び出す必要はありません。 ブロック型の詳細については、デバッグ ヒープ上のメモリ ブロックの型に関する記事をご覧ください。
汎用テキスト ルーチンのマップ
TCHAR.H のルーチン | _UNICODE と _MBCS が定義されていない |
_MBCS が定義されている |
_UNICODE が定義されている |
---|---|---|---|
_tcsdup_dbg |
_strdup_dbg |
_mbsdup |
_wcsdup_dbg |
要件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
_strdup_dbg , _wcsdup_dbg |
<crtdbg.h> |
互換性の詳細については、「 Compatibility」を参照してください。
ライブラリ
C ランタイム ライブラリのすべてのデバッグ バージョン。