_strdup_dbg、_wcsdup_dbg
_strdup および _wcsdup の、malloc のデバッグ バージョンを使用するバージョンです。
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 関数は、_DEBUG が定義されている場合に malloc、_malloc_dbg のデバッグ バージョンを使用してコピーされた文字列にメモリを割り当てることを除いて、_strdup と _wcsdup 関数と同じです。 _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> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
ライブラリ
C ランタイム ライブラリのすべてのデバッグ バージョン。