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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Manco
2 / 2 / 0
Регистрация: 17.09.2012
Сообщений: 34
#1

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

28.09.2012, 15:37. Просмотров 877. Ответов 5
Метки нет (Все метки)

C++
1
2
int *p;
p=malloc(10*sizeof(int));
При компиляции указывает на строчку с malloc и пишет error: invalid conversion from ‘void*’ to ‘int’. В чём ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2012, 15:37     Почему не работает malloc()?
Посмотрите здесь:

Не понимаю как работает функция malloc - C++
Можете объяснить, что здесь значит каждый символ и элемент в этой строчке? mas=(int*)malloc(n*sizeof(int));и почему они находятся именно в...

Почему не работает? - C++
#include <iostream>; #include <cmath>; #include <vector>; using namespace ::std; void main () { vector<double>temps; ...

почему не работает? - C++
господа почему не правельно работает программа? #include <cstdio> #include<iostream> using namespace std; int main() { ...

Почему не работает? - C++
Здравствуйте уважаемые программисты! Вроде должно работать. Программа считает среднее арифметическое значение: Вот код. #include...

почему не работает? - C++
Комплексное число. Заданы действительная и мнимая части комплексного числа z = х+iy. Преобразовать его в тригонометрическую форму и...

почему не работает? - C++
решил по практиковаться с выделением динамической памяти: почему не работает код: #include <iostream> using namespace std; int...

почему-то не работает - C++
ошибок компилятор не видит, но компилировать отказывается (dev-cpp + mingw). ошибки в работе программы меня мало волнуют, но надо чтобы она...

Почему не работает??? - C++
Прога должна считать количество нулевых элементов, и элементов в диапазоне от 7 до 10. А на экран выводится какие-то отрицательные...

Почему не работает if-else - C++
Привет, форумчане! Значицца, так, дано задание (опущу ненужное) задать диапазон массива от 1 до 20. >Если да, то выполнять следующее...

Почему работает? - C++
#include <iostream> #include <vector> #include <ctime> #include <iterator> #include <string> #include <sstream> class...

Почему не работает? - C++
Почему не работет программа? #include <stdio.h> #include <conio.h> #include <iostream> #include <ctime> #define N 10 ...

Не работает. Почему? - C++
Почему не работает данный код? #include <stdio.h> void main() { char *menu; char **order; char **Cprice; int a = 0; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 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, потому что пока учу С. Я думал, что компилятор С++ возьмёт сишную запись.
Герц
524 / 341 / 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()?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru