С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Oneto
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 30
1

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

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

в чем разница? что лучше использовать?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2016, 10:32
Ответы с готовыми решениями:

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

Malloc + reinterept_cast и new. В чем разница?
Уважаемые форумчане, скажите пожалуйста, в чем разница между этим: int*...

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

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

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

8
maxm
63 / 35 / 25
Регистрация: 17.07.2014
Сообщений: 457
22.02.2016, 10:37 2
Зависит от того, что тебе надо.
malloc это чистый С, выделение памяти вручную, задавая размер, какой нужен, и т.д.
new это С++, он умнее, автоматически дает тебе память нужного размера, и если ты посмотришь как он реализован, то он использует ни что иное, как malloc для выделения памяти.
1
rikimaru2013
C++ Game Dev
2473 / 1141 / 349
Регистрация: 30.11.2013
Сообщений: 3,709
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
2473 / 1141 / 349
Регистрация: 30.11.2013
Сообщений: 3,709
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
Заблокирован
Эксперт С++
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, у меня более понятнее пример! :p

0
Oneto
0 / 0 / 0
Регистрация: 14.02.2016
Сообщений: 30
22.02.2016, 12:10  [ТС] 8
ок, понятно.
0
Croessmah
++Ͻ
14777 / 8453 / 1605
Регистрация: 27.09.2012
Сообщений: 20,804
Записей в блоге: 2
Завершенные тесты: 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

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

В чем разница между f.read(),f.write() и f<<., f>>.?
В чем разница между f.read(),f.write() и f&lt;&lt;..., f&gt;&gt;...?

В чем разница между Debug and Release?
Какие действия выполняет debug в Visual studio и какие Release, в чем разница?...


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

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

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