Форум программистов, компьютерный форум CyberForum.ru

Почему не работает malloc()? - C++

Восстановить пароль Регистрация
 
Manco
2 / 2 / 0
Регистрация: 17.09.2012
Сообщений: 34
28.09.2012, 15:37     Почему не работает malloc()? #1
C++
1
2
int *p;
p=malloc(10*sizeof(int));
При компиляции указывает на строчку с malloc и пишет error: invalid conversion from ‘void*’ to ‘int’. В чём ошибка?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
28.09.2012, 15:40     Почему не работает malloc()? #2
Manco, В том, что компилируете С код как С++. В С++ запрет на неявное преобразование из void* в T*.
C++
1
p=(int*)malloc(10 * sizeof(int));
будет работать ок. Но почему не new?
Manco
2 / 2 / 0
Регистрация: 17.09.2012
Сообщений: 34
28.09.2012, 15:42  [ТС]     Почему не работает malloc()? #3
Хмм, если добавить перед malloc запись (int*), то всё работает.
Странно, пример который я привёл в начале взят из книги Крупника по С. В С++ так работать не будет?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
28.09.2012, 15:42     Почему не работает malloc()? #4
Manco, Нет. И чуть выше я описал почему.
Manco
2 / 2 / 0
Регистрация: 17.09.2012
Сообщений: 34
28.09.2012, 15:43  [ТС]     Почему не работает malloc()? #5
Цитата Сообщение от ForEveR Посмотреть сообщение
Manco, В том, что компилируете С код как С++. В С++ запрет на неявное преобразование из void* в T*.
C++
1
p=(int*)malloc(10 * sizeof(int));
будет работать ок. Но почему не new?
Писал свой пост не видя ваш)
Спасибо за ответ)

Не new, потому что пока учу С. Я думал, что компилятор С++ возьмёт сишную запись.
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
28.09.2012, 17:19     Почему не работает malloc()? #6
error: invalid conversion from ‘void*’ to ‘int*’
А ответ ведь элементарный, смотрим на прототип malloc, видимо что он имеет вид
C++
1
void* malloc( size_t size );
смотрим на возвращаемый тип, сравниваем с типом своего указателя и все, не надо даже на форум писать.
Yandex
Объявления
28.09.2012, 17:19     Почему не работает malloc()?
Ответ Создать тему
Опции темы

Текущее время: 11:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru