c++ - 无效的运行时参数 _itoa_s

标签 c++ winapi

在使用 _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 返回给定 ProcessHandlePID (DWORD)

getIntSize 将数字的数量返回到相应的 int/char 数组 (5555 => 4)。

最佳答案

是的,安全 CRT 函数会在检测到问题时以状态代码 0xc0000417 中止您的程序。但是,它们会立即执行此操作,该函数不会返回。

这意味着您正在查看此问题的错误源代码。轰炸您的程序的不是 _ultoa_s() 调用。这是另一个函数调用,在您代码的其他地方。我当然不能帮你找到它。但是调试器应该给你一个好主意,当它中断时查看调用堆栈。

关于c++ - 无效的运行时参数 _itoa_s,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3467444/

相关文章:

c - netstat如何知道接收和发送的字节数?

python - IE8 自动化和 https

c# - Function C++ 到 C#(安全代码)

c++ - C 中 ubuntu 上的性能计数器库

c++ - x64 平台上的 GCC 是否默认启用扩展精度?

perl - 当 stdin/stderr/stdout 在 Activestate Perl 中重定向时写入控制台

delphi - 如何使用AllowSetForegroundWindow?

带有 Jazzy UI 的 C# 应用程序

c++ - 字符串归并排序

c++ - Const 正确性和 shared_ptr 转换