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

Malloc vs new - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++/CLI WinForms Игнорировать нажатие Enter в TextBox http://www.cyberforum.ru/cpp-beginners/thread1495397.html
Подскажите как игнорировать нажатие enter в форме textbox?
C++ Реализовать собственный cin Я короче хочу реализовать собственный cin. Просто оно медленно работает. И в этом проблема. typedef long long ll; struct Cin{ void operator >>(ll &x){ scanf("%lld", &x); } }Cin; http://www.cyberforum.ru/cpp-beginners/thread1495377.html
Вывести те согласные буквы, которые входят в первое предложение и не входят во второе C++
Всем привет помогите пожалуйста-Решить задачу с использованием множества: имеются два предложения, состоящие из русских букв, цифр и знаков препинания. Вывести те согласные буквы, которые входят в первое предложение и не входят во второе.
Квадратное уравнение (найти ошибку) C++
Добрый день, решал вот такую задачку, однако она не проходит один из тестов, помогите найти ошибку. Также, как я понял, при отсутствии корней нужно вывести просто 0 - как-то умалчивается об этом в условии. Спасибо. Сложно найти человека, который любит решать однообразные задачки по математике. В последнее время школьникам стало легче, ведь с появлением компьютеров почти в каждой квартире стало...
C++ Обработка нажатия клавиши http://www.cyberforum.ru/cpp-beginners/thread1495324.html
нужно задать нажатию клавиши enter другие функции: private: System::Void textBox1_TextChanged_1(System::Object^ sender, System::EventArgs^ e) { if (Control::ModifierKeys == Keys::Enter) { //код этих новых действий } а у меня не работает. В чем ошибка?
C++ Шаблоны В файле есть такое определение template<int32 aMaxLength> class TTextBuffer: public MString { public: /** Construct an empty TTextBuffer object. */ TTextBuffer() { } /** Construct a TTextBuffer object from an 8-bit ASCII string. */ TTextBuffer(const char* aText) подробнее

Показать сообщение отдельно
DrOffset
6851 / 4062 / 927
Регистрация: 30.01.2014
Сообщений: 6,859
08.07.2015, 15:35     Malloc vs new
Цитата Сообщение от VoltDeMar Посмотреть сообщение
malloc вызывает какие то конструкторы?
Нет.
Цитата Сообщение от VoltDeMar Посмотреть сообщение
Как происходит доступ к методам класса без объекта, что расположено в памяти?
По сути, функция класса может быть реализована так:
C++
1
<тип возвращаемого значения> Foo_method(Foo* this, <аргументы>);
Т.е. компилятору все равно (если дело не касается виртуальных вызовов), что память, которая отведена под объект, не инициализирована. Он сгенерирует код, где указатель на эту память передается в эту функцию первым скрытым параметром при вызове и все.
Другое дело, что код, который должен работать внутри функции-члена, может зависеть от состояния объекта, которое задается конструктором. Иными словами программа будет работать, но некорректно.

Вот это из цитаты:
Цитата Сообщение от VoltDeMar
Различие между ними состоит в том, что объект Foo, адресуемый указателем myFoo, не является, по сути, объектом, поскольку он не был построен.
И вот это
Цитата Сообщение от VoltDeMar
прочел что malloc не вызывает конструктор.
Об одном и том же. "Объект не был построен" == "не был вызван конструктор".

Вот тебе код для размышления:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <new>
#include <iostream>
 
class A { 
public:
    A() : v(10) {}
 
    void foo() { std::cout << v << std::endl;  }
private:
    int v;
};
 
int main()
{
    char memory[sizeof(A)]; // Пока что опустим детали насчет выравнивания
 
    A * p = (A*)memory;
 
    p->foo();
 
    ::new(p) A();
 
    p->foo();
};
 
Текущее время: 01:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru