2013-06-04 4 views
1

Ниже приведена часть моего кода. Я не уверен, что случилось с ним, потому что, когда я отлаживать этот код, я получаю следующее сообщение об ошибке:Unhandled Exception при использовании itoa

Unhandled exception at 0x60e8144c (msvcr90d.dll) in client0.exe: 0xC0000005: Access violation writing location 0x00000000.

Это где-то в строке itoa.

КОД:

int num = LOWORD (lparam); 
    char *number = NULL,*detail = NULL; 
    (char*)itoa(num,number,10); 
+0

говорит ошибка во время выполнения «Я не могу написать адрес 0x00000000». Это должно заставить вас подозревать, что запись в нулевой указатель происходит. У вас есть такие указатели в вашей программе. Вы пишете им. Отсюда сообщение об ошибке. – Lundin

+0

Что касается чтения некоторой документации: http://msdn.microsoft.com/en-us/library/ms235327%28v=vs.110%29.aspx – alk

ответ

2

number - указатель, и вы не выделили для него память. И затем пытаюсь написать в него.

Update его использовать массив или выделять память с помощью malloc

int num = LOWORD (lparam); 
char number[20],*detail = NULL; 
(char*)itoa(num,number,10); 
+0

Это сработало для меня. Большое спасибо :) – Ayse

3

Вы должны пройти действительную инициализирован указатель на itoa().

+0

Вы имеете в виду, что я должен сначала инициализировать * номер с некоторым значением? :( – Ayse

+0

@AyeshaHassan Нет, 'number' должен указывать на допустимую ячейку памяти, в которой выделена память. – Lundin

+0

Спасибо, у меня появилась идея :) – Ayse

Смежные вопросы