在使用 _itoa_s
和 _ultoa_s
时,如果我尝试从 DWORD
获取 char 数组,我会遇到奇怪的行为。该函数返回零(成功)并且我的应用程序继续,但我收到一个错误代码为 0xc0000417 (STATUS_INVALID_CRUNTIME_PARAMETER)
的异常窗口。
ULONG pid = ProcessHandleToId(hProcess);
int size = getIntSize(pid);
char *pidStr = new char[size+1];
_ultoa_s(pid, pidStr, size+1, 10);
//do sth with pidStr...
delete[] (pidStr);`
ProcessHandleToId
返回给定 ProcessHandle
的 PID (DWORD)
。
getIntSize
将数字的数量返回到相应的 int/char
数组 (5555 => 4)。
最佳答案
是的,安全 CRT 函数会在检测到问题时以状态代码 0xc0000417 中止您的程序。但是,它们会立即执行此操作,该函数不会返回。
这意味着您正在查看此问题的错误源代码。轰炸您的程序的不是 _ultoa_s() 调用。这是另一个函数调用,在您代码的其他地方。我当然不能帮你找到它。但是调试器应该给你一个好主意,当它中断时查看调用堆栈。
关于c++ - 无效的运行时参数 _itoa_s,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3467444/