我使用_itoa_s
和_ultoa_s
時遇到了一個奇怪的行爲,如果我嘗試從DWORD
獲取char數組。該函數返回零(成功),我的應用程序繼續,但我得到一個異常窗口,錯誤代碼0xc0000417 (STATUS_INVALID_CRUNTIME_PARAMETER)
。無效cruntime參數_itoa_s
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
返回PID (DWORD)
對於給定ProcessHandle
。
getIntSize
將數字的數量返回給相應的int/char
數組(5555 => 4)。
與問題無關,但應使用'delete []'。 – sharptooth 2010-08-12 12:14:20
「..但我得到一個例外..」 - 什麼時候?你的代碼似乎是正確的,順便說一句。 – msteiger 2010-08-12 12:51:02
我可以編譯我的代碼,我的應用程序似乎2運行。爲了給出更多的背景信息:這段代碼是調用NtTerminateProcess時調用的回調例程的一部分。我需要終止進程的processid。當我每次運行我的應用程序ultoa_s被稱爲我的應用程序中斷,我得到0xc000417異常blabla窗口....但函數返回0(成功)和正確的值(pid)存儲在pidStr ...它的駕駛我瘋了! 我在另一個例程中使用相同的代碼,它沒有任何問題。 – christian 2010-08-12 12:59:08