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

Чем new отличается от malloc? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужно написать программу нахождения скачка потенциала. (Есть алгоритм) http://www.cyberforum.ru/cpp-beginners/thread895479.html
Дан U - массив оцифрованного потенциала. Дано еще U пороговое. Найти скачек и вернуть время скачка. 1. Вводим то, что дано. Это понятно. - dt - шаг табуляции U(t) или шаг квантования, - n - размерность массива U(), - Uпорог - порог компаратора, 2. Зануляем начальные условия - i - счетчик цикла, - к - переменная, в которой накапливается количество точек U(t) выше Uпорог,
C++ Нюансы выделения и освобождения памяти (структуры) struct point { int a; point *next; } point *p=new point Я освобожу всю память которая отводилась под динам. структуру? delete p; http://www.cyberforum.ru/cpp-beginners/thread895461.html
Описать структуру с именем NOTE C++
Вот в чем проблема, у меня есть код примера задачи, условие которого: 1. Описать структуру с именем NOTE, содержащую следующее поля: *фамилия,имя; *номер телефона; *день рождения(число, месяц - массив из 3-х чисел). 2. Написать программу, выполняющую следующие действия: * Вввод с клавиатуры данных в массив, состоящий из девяти структур типа NOTE; * вывод данных на экран записи должны...
C++ Указатель на ф-цию в структуре
Привет всем, почему если объявить структуру в виде указателя и присвоить указателю на ф-цию функцию, то будет ошибка, а если объявить структуру не как указатель, то работает всё нормально. Пишу так: struct Route{ void (*start)(char *); } * route; int main(){ route -> start = test; //Ошибка сегментирование при запуске программы route.start = test; //Работает нормально
C++ Протабулировать функцию http://www.cyberforum.ru/cpp-beginners/thread895447.html
Функция: f(x,y)={x}^{3}+\sqrt{y} x\in (-2;2) y\in (0;3.5) с шагом 0,35
C++ Множества Из множества M точек на плоскости, заданных декартовыми координатами, сформировать подмножество P\leq M, содержащее точки, которые находятся внутри замкнутой точки D. Область D ограничена линиями, уравнения которых y=0,2*x-{k}_{1}; {k}_{{i}_{1}}=0,1, \Delta {k}_{i}=0,1 , {k}_{{i}_{2}}=0,5. y={k}_{2}*\cos (x+0,25); {k}_{{i}_{1}}=1,0 , \Delta {k}_{i}=0,4,{k}_{{i}_{2}}=2,2.... подробнее

Показать сообщение отдельно
BumerangSP
4285 / 1407 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
08.06.2013, 19:13     Чем new отличается от malloc?
malloc - функция, которая просто выделяет блок памяти размера, передаваемого в качестве параметра, и возвращает void указатель. при этом, чтобы присвоить указателю на какой-то объект адрес этой памяти, нужно сперва явно привести возвращаемое значение функции к нужному типу. При этом нет никакой проверки на удачное выделение.
Оператор new же выделяет память с проверкой (в случае ошибки генерирует bad_alloc) и с вызовом конструктора для объекта. Т.е. объект можно сразу проинициализировать. В случае пользовательский типов, конструктору вместе со списком параметров передается указатель this, содержащий адрес объекта в памяти. Притом не нужно никаких явных приведений типов. Также для своих типов можно перегрузить new, delete, либо их версии для массивов. Можно разместить объект по адресу, где заранее выделена память, передав в качестве второго параметра указатель. Деструктор при этом нужно будет вызывать явно, т.к. память для объекта мы не выделяем, а передаем лишь указатель.

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