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

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

Войти
Регистрация
Восстановить пароль
 
Oneto
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 30
#1

В чем разница между malloc и new? - C++

22.02.2016, 10:32. Просмотров 355. Ответов 8
Метки нет (Все метки)

в чем разница? что лучше использовать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2016, 10:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В чем разница между malloc и new? (C++):

В чем разница между new и malloc()? - C++
Всем доброго дня ! Начал читать книгу Пахомов Б. "C/C++ и MS Visual C++ 2008 для начинающих" До этого прочитал С++ за 21 день. ...

Malloc + reinterept_cast и new. В чем разница? - C++
Уважаемые форумчане, скажите пожалуйста, в чем разница между этим: int* arr_i; arr_i = reinterpret_cast<int*>(malloc(sizeof(int)*...

В чем разница malloc и calloc? - C++
подскажите пожалуйста,в чем разница malloc и calloc? эмалок выделение динамической памяти а сиалок выделение чистой памяти. в смысле...

В чем разница между С и С++ - C++
Возник вопрос в чем жи разница между С и С++ кроме того, что в С++ есть классы а в С их нету ?

В чем разница между [] и * ? - C++
Думал, что ни в чем, но когда попытался сделать так: (в файле 1) char lc; в файле 2: extern char* lc; Компилятор ругаться не стал,...

В чем разница между X x; и X x()? - C++
Корректный ли этот ответ?

8
maxm
62 / 34 / 8
Регистрация: 17.07.2014
Сообщений: 457
22.02.2016, 10:37 #2
Зависит от того, что тебе надо.
malloc это чистый С, выделение памяти вручную, задавая размер, какой нужен, и т.д.
new это С++, он умнее, автоматически дает тебе память нужного размера, и если ты посмотришь как он реализован, то он использует ни что иное, как malloc для выделения памяти.
1
rikimaru2013
C++ Game Dev
2443 / 1136 / 240
Регистрация: 30.11.2013
Сообщений: 3,696
22.02.2016, 11:35 #3
1) new использует malloc
2) new вызывает конструктор
3) new можно на уже существующей в программе памяти
0
Oneto
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 30
22.02.2016, 11:46  [ТС] #4
п.3 не понятен, что вы хотели сказать?
0
rikimaru2013
C++ Game Dev
2443 / 1136 / 240
Регистрация: 30.11.2013
Сообщений: 3,696
22.02.2016, 11:49 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
 
struct Foo
{
    Foo( int x ) : _x( x )
    {
    }
    int _x;
};
int main()
{
    Foo* ptr = new Foo(10);
    cout << ptr->_x << endl;
    Foo* ptr2 = new (ptr) Foo( 19 );
    cout << ptr->_x << endl;
    cout << ptr2->_x << endl;
}
1
hoggy
6766 / 2951 / 507
Регистрация: 15.11.2014
Сообщений: 6,639
Завершенные тесты: 1
22.02.2016, 11:51 #6
Цитата Сообщение от Oneto Посмотреть сообщение
п.3 не понятен, что вы хотели сказать?
это называется new placement
или "размещающий new"

память при этом не выделяется.
объект располагает по адресу, который указал программист.

пример:


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
int main()
{
    // допустим есть некоторый класс
    struct sample { int data = 3; };
 
    // и есть некоторое хранилище данных
    char storage[ sizeof(sample) ];
 
    // теперь мы захотели создать объект класса
    // не абы где, а именно в этом хранилище
    new (storage) sample;
 
    // теперь мы хотим извлечь данные из хранилища
    auto p = reinterpret_cast<sample*>(storage);
 
    std::cout <<"data = "<< p->data<<std::endl;
}
1
rikimaru2013
22.02.2016, 11:53
  #7

Не по теме:

hoggy, у меня более понятнее пример!

0
Oneto
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 30
22.02.2016, 12:10  [ТС] #8
ок, понятно.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13565 / 7716 / 873
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
22.02.2016, 13:30 #9
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
new использует malloc
new-expression использует operator new, а не malloc,
а уж как реализован operator new - забота разработчиков компилятора.
2
22.02.2016, 13:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.02.2016, 13:30
Привет! Вот еще темы с ответами:

В чем разница между random и randomize? - C++
в чем разница между random и randomize??

В чем разница между Рекурсией и Итерацией? - C++
Рекурсия позволяет сэкономить время но требует больше памяти, а циклы длятся дольше рекурсии но при этом занимают меньше памяти? Я...

В чем разница между инициализацией и присваиванием? - C++
в чем разница между инициализацией и присваиванием? практически это одно и тоже,кроме инициализации ссылок-они могут менять значение.

В чем разница между scanf_s и scanf? - C++
какая разница между scanf_s и scanf?


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

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