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

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

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

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

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

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

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

Почему выводится в виде таблицы и почему не работает сортировка - C++
почему выводится в виде таблицы? почему не работает сортировка? и как туда можно вставить классы комнат? hotel.h #include...

Почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает - C++
почему программа не работает на MFC статичной библиотеки. а вот на стандартном мфс работает. Имею в ввиду что сделал прогу которая меняет...

Почему не работает cin.clear() и как работает sync()? - C++
#include<iostream> #include<cstring> using namespace std; char*input(char*ch,int&n){ cin.getline(ch,20); //cin.sync(); ...

Почему в динамическом массиве не работает то, что работает со статическим? - C++
Программа зависает #include<iostream> #include<stdlib.h> #include<time.h> using namespace std; int main() { ...

Не могу понять почему не работает (или правильно не работает) - C++
#include <iostream.h> #include <conio.h> #define N 5 #define M 3 void main() { int a; int i,j; cout<<"nachalnya...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ForEveR
В астрале
Эксперт С++
7973 / 4735 / 321
Регистрация: 24.06.2010
Сообщений: 10,542
Завершенные тесты: 3
28.09.2012, 15:40 #2
Manco, В том, что компилируете С код как С++. В С++ запрет на неявное преобразование из void* в T*.
C++
1
p=(int*)malloc(10 * sizeof(int));
будет работать ок. Но почему не new?
0
Manco
2 / 2 / 0
Регистрация: 17.09.2012
Сообщений: 34
28.09.2012, 15:42  [ТС] #3
Хмм, если добавить перед malloc запись (int*), то всё работает.
Странно, пример который я привёл в начале взят из книги Крупника по С. В С++ так работать не будет?
0
ForEveR
В астрале
Эксперт С++
7973 / 4735 / 321
Регистрация: 24.06.2010
Сообщений: 10,542
Завершенные тесты: 3
28.09.2012, 15:42 #4
Manco, Нет. И чуть выше я описал почему.
0
Manco
2 / 2 / 0
Регистрация: 17.09.2012
Сообщений: 34
28.09.2012, 15:43  [ТС] #5
Цитата Сообщение от ForEveR Посмотреть сообщение
Manco, В том, что компилируете С код как С++. В С++ запрет на неявное преобразование из void* в T*.
C++
1
p=(int*)malloc(10 * sizeof(int));
будет работать ок. Но почему не new?
Писал свой пост не видя ваш)
Спасибо за ответ)

Не new, потому что пока учу С. Я думал, что компилятор С++ возьмёт сишную запись.
0
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
28.09.2012, 17:19 #6
error: invalid conversion from ‘void*’ to ‘int*’
А ответ ведь элементарный, смотрим на прототип malloc, видимо что он имеет вид
C++
1
void* malloc( size_t size );
смотрим на возвращаемый тип, сравниваем с типом своего указателя и все, не надо даже на форум писать.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2012, 17:19
Привет! Вот еще темы с ответами:

Почему в библиотеке не работает то, что спокойно работает в программе? - C++
День всем добрый! Я здесь решил собрать библиотеку для конструктора игр Game Maker. Хотел поэкспериментировать. Как всегда, у...

Теория. Почему в данном случае copy() не работает после reserve(), но работает после resize()? - C++
Есть такая функция: void Array::SetStartIndexes(sz3_Arr_t *array) { start_index.reserve(array->size()); ...

Работает в Borland Developer Studio 2006 но не работает в Visual Studio 2008, почему? - C++
Вводим строку и меняем в ней первый и последний символы. Всё хорошо в Borland Developer Studio, а Visual Studio 2008 пишет, что проэкт...

Почему не работает - C++
#include <string.h> using namespace std; int main() { string sentence; getline(cin, sentence); string a,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.09.2012, 17:19
Ответ Создать тему
Опции темы

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