_CrtSetDebugFillThreshold (original) (raw)
Retrieves or modifies the threshold controlling buffer-filling behavior in debug functions.
Syntax
size_t _CrtSetDebugFillThreshold( size_t newThreshold );
Parameters
newThreshold
New threshold size in bytes.
Return value
The previous threshold value.
Remarks
The debug versions of some security-enhanced CRT functions fill the buffer passed to them with a special character (0xFE). This fill character helps to find cases where the incorrect size was passed to the function. Unfortunately, it also reduces performance. To improve performance, use _CrtSetDebugFillThreshold to disable buffer-filling for buffers larger than the newThreshold threshold. A newThreshold value of 0 disables it for all buffers.
The default threshold is SIZE_T_MAX.
Here's a list of the affected functions:
- asctime_s, _wasctime_s
- _cgets_s, _cgetws_s
- ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s
- _ecvt_s
- _fcvt_s
- _gcvt_s
- _itoa_s, _ltoa_s, _ultoa_s, _i64toa_s, _ui64toa_s, _itow_s, _ltow_s, _ultow_s, _i64tow_s, _ui64tow_s
- _makepath_s, _wmakepath_s
- _mbsnbcat_s, _mbsnbcat_s_l
- _mbsnbcpy_s, _mbsnbcpy_s_l
- _mbsnbset_s, _mbsnbset_s_l
- _mktemp_s, _wmktemp_s
- _splitpath_s, _wsplitpath_s
- strcat_s, wcscat_s, _mbscat_s
- strcpy_s, wcscpy_s, _mbscpy_s
- _strdate_s, _wstrdate_s
- strerror_s, _strerror_s, _wcserror_s, __wcserror_s
- _strlwr_s, _strlwr_s_l, _mbslwr_s, _mbslwr_s_l, _wcslwr_s, _wcslwr_s_l
- strncat_s, _strncat_s_l, wcsncat_s, _wcsncat_s_l, _mbsncat_s, _mbsncat_s_l
- strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l
- _strnset_s, _strnset_s_l, _wcsnset_s, _wcsnset_s_l, _mbsnset_s, _mbsnset_s_l
- _strset_s, _strset_s_l, _wcsset_s, _wcsset_s_l, _mbsset_s, _mbsset_s_l
- _strtime_s, _wstrtime_s
- _strupr_s, _strupr_s_l, _mbsupr_s, _mbsupr_s_l, _wcsupr_s, _wcsupr_s_l
- vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l
Requirements
| Routine | Required header |
|---|---|
| _CrtSetDebugFillThreshold | <crtdbg.h> |
This function is Microsoft-specific. For more compatibility information, see Compatibility.
Libraries
Debug versions of the C run-time libraries only.
Example
// crt_crtsetdebugfillthreshold.c
// compile with: cl /MTd crt_crtsetdebugfillthreshold.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <crtdbg.h>
void Clear( char buff[], size_t size )
{
for( int i=0; i<size; ++i )
buff[i] = 0;
}
void Print( char buff[], size_t size )
{
for( int i=0; i<size; ++i )
printf( "%02x %c\n", (unsigned char)buff[i], buff[i] );
}
int main( void )
{
char buff[10];
printf( "With buffer-filling on:\n" );
strcpy_s( buff, _countof(buff), "howdy" );
Print( buff, _countof(buff) );
_CrtSetDebugFillThreshold( 0 );
printf( "With buffer-filling off:\n" );
Clear( buff, _countof(buff) );
strcpy_s( buff, _countof(buff), "howdy" );
Print( buff, _countof(buff) );
}
With buffer-filling on:
68 h
6f o
77 w
64 d
79 y
00
fe ■
fe ■
fe ■
fe ■
With buffer-filling off:
68 h
6f o
77 w
64 d
79 y
00
00
00
00
00