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

Как работает "new с размещением" - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как работает программа показа живых обоев на рабочем столе (winVista/7/8/8.1)? http://www.cyberforum.ru/cpp-beginners/thread1230310.html
Существует программа DreamScenes, которая позволяет устанавливать видео обои на рабочий стол (обычное видео в формате dream/wmv/mpg). Также в VLC media player есть функция показа видео в режиме обоев...
C++ Простая игра 3D на C++ Здравствуйте! Я бы хотел попробовать написать простенькую 3D игру на C++. Физический движок мне не нужен, так как физики там сложной не будет. Я бы хотел узнать какие графические библиотеки для... http://www.cyberforum.ru/cpp-beginners/thread1230306.html
Класс содержит более одного конструктора по умолчанию C++
Имеется класс: class ControlObject { private: string productsFilename; ofstream fout; ifstream fin; bool isOpenFile; bool isEmptyFile; public:
C++ Как осуществить прорисовки и анимацию в консолевских приложениях?
Как осуществить прорисовки и анимацию в консолевских приложениях? Буду очень благодарен за ссылки на книги или сайты. Сам не смог найти чего-то подобного. Особенно интересует анимация.
C++ Вычислить арифметическое выражение и вывести результат на экран http://www.cyberforum.ru/cpp-beginners/thread1230169.html
Помогите написать программу, которая a) Ввод с клавиатуры вещественных чисел: a, b, c и d. b) Проверяет исходные данные на область допустимых значений. c) Вычисляет арифметическое выражение...
C++ Структура "Студент": переделать задачу с использованием указателей Описать Структуру с именем STUDENT с полями: 1. NAME-фамилия и инициалы; 2.GROUP-номер группы; 3.SES-успеваемость(массив из 5 элементов).Написать программу, выполняющую следующие действия: -ввод... подробнее

Показать сообщение отдельно
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,213
19.07.2014, 11:22
Цитата Сообщение от dalay_lama Посмотреть сообщение
Соответственно мы заняли 48 байт из 512.
почему 48???
размер double 8 байт 8*5=40
Цитата Сообщение от dalay_lama Посмотреть сообщение
Уважаемые знатоки, объясните пожалуйста, как работает "new с размещением"?
если ты это имеешь ввиду Placement new
то почитай
http://ru.wikipedia.org/wiki/New_(C%2B%2B)
соответствующую главу
в двух словах
Цитата Сообщение от dalay_lama Посмотреть сообщение
char buff[512];
здесь мы выделили память под 512 байт
почему char? Потому что в Си char равен одному байту
Цитата Сообщение от dalay_lama Посмотреть сообщение
double *p = new (buff) double[5]
здесь в выделенной памяти создали пять объектов double
причем new в такой конструкции не выделяет память, она уже выделена, а вызывает конструктор, в данном случае double
Цитата Сообщение от dalay_lama Посмотреть сообщение
И вообще, для чего может потребоваться такая операция?
когда у тебя уже есть выделенный участок памяти и тебе нужно положить туда определенный тип, например свой класс
Часто такой метод применяют, когда у класса нет конструктора по умолчанию и при этом нужно создать массив объектов.
Цитата Сообщение от dalay_lama Посмотреть сообщение
Но тогда вопрос в следующем, а что будет, если я в этот буффер, положу значение, которое больше чем сам буффер?
А рухнет все А может не рухнет неизвестно к чему приведет
выходим за границы памяти
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru