Invalid parameter passed to C runtime function

Invalid parameter passed to C runtime function


寻找位置:


dumpbin /exports c:\windows\system32\msvcrt.dll | findstr _invalid_parameter


什么时候编译器生成调用这个_invalid_parameter的代码呢?


测试代码:

int main(int argc, char  * argv []){
	typedef void (*pfn_invalid_parameter)(const wchar_t *, const wchar_t *, const wchar_t *, int, int * );
	HMODULE hmod = LoadLibraryA("msvcrt.dll");
	pfn_invalid_parameter testfn = (pfn_invalid_parameter)GetProcAddress(hmod, "_invalid_parameter");
	testfn = testfn;
	int t;
	testfn(__FILEW__, L"$$$$$$$$$$$$", L"$$$$$$$$$$$$$$$$$", 123, &t);
	printf("asdfsdfsd");
	return 0;
}


调试到调用testfn的位置,进入反汇编:

Invalid parameter passed to C runtime function_第1张图片


跟进

Invalid parameter passed to C runtime function_第2张图片


那么,什么时候crt会自动加入这样的检查呢?



你可能感兴趣的:(c,Runtime,Parameters,Invalid,functions,crt,watson)