Страницы

Поиск по вопросам

суббота, 22 июня 2019 г.

Ошибка конверсии void* в char* при использовании функции malloc

Почему-то ловлю ошибку конверсии void* в char* при использовании функции malloc.
char *strLine = (char *)malloc(256); strLine = memset(strLine, 0x00, 256);
Ошибка возникает именно во второй строчке. Компилятор указывает мне, мол, уважаемый пользователь, вы неверно объявили переменную strLine. Погуглил - нашёл очень похожую проблему тоже с использованием malloc, но там всё решилось добавлением этого самого **(char *)**перед malloc. Так в чём же дело? Почему мне это не помогает?


Ответ

Ну, проблема у вас во второй строчке, а не в первой: strLine имеет тип char*, а memset возвращает void*
Вы могли бы скастить возвращаемое memset'ом значение в char*. Но оно вам в принципе вовсе не нужно. Просто напишите
memset(strLine, 0x00, 256);
Вы ж всё равно уже аллоцировали память, ничего нового из memset к вам не придёт.

Комментариев нет:

Отправить комментарий