![]() |
|
Другие темы раздела | |
C++ Какой заголовочный файл надо подключить, чтобы вывести значение констант CHAR_MIN и CHAR_MAX?
https://www.cyberforum.ru/ cpp-beginners/ thread1786583.html У меня почему-то не получается написать программу, которая выводит пределы значений переменных типа char. Какой заголовочный файл надо подключить чтобы вывести значение констант CHAR_MIN и CHAR_MAX?... |
Создать новый объект-наследник абстрактного класса C++ Приветствую, друзья! У нас есть абстрактный класс AbstractClass и его наследники child1 и child2. В массиве у нас есть несколько экземпляров классов child1 и child2 (и неизвестно еще сколько будет).... |
C++ Ошибка компиляции при реализации класса-шаблона
https://www.cyberforum.ru/ cpp-beginners/ thread1786479.html Не могу понять почему компилятор ругается. Помогите разобраться. #include <iostream> using namespace std; template <class T> class A { |
C++ Как организовать шифрование данных в текстовом файле? Доброго времени суток форумчане. Я в этой теме абсолютный нуль, по-этому прошу вашей помощи. У меня есть, к примеру, файл для хранения данных о 3D модели. В нём, как известно, содержатся координаты... https://www.cyberforum.ru/ cpp-beginners/ thread1786446.html |
Найти произведение элементов массива , расположенных между максимальным и минимальным элементами C++ Здравствуйте!:) Прошел несколько тем по C++ , а именно Базовые средства языка С++ и одномерные массивы . Решил по практиковаться , решил задачу. Работает вроде бы правильно , я бы хотел услышать... |
C++ Почему при проходе массива с обратной стороны начальная точка отсчета n-1?
https://www.cyberforum.ru/ cpp-beginners/ thread1786393.html Почему при проходе массива с обратной стороны начальная точка отсчета n-1? #include <iostream> using namespace std; int main() { const int n=7; int i,z=0,temp=0; |
C++ Определить день когда пробег спортсмена составит не менее заданного
https://www.cyberforum.ru/ cpp-beginners/ thread1786391.html В первый день спортсмен пробежал x километров, а затем он каждый день увеличивал пробег на 70% от предыдущего значения. По данному числу y определите номер дня, на который пробег спортсмена составит... |
C++ Вывести на консоль все числа, удовлетворяющие условию Помогите с написанием программы. Я "ну очень начинающая". Не могу разобраться. Напишите программу, которая выводит все числа в диапазоне от ста до десяти тысяч включительно, которые не делятся ни... |
C++ Lua vs Json Добрый день, встречаю, который проект на ряду, которые связывают С++ с Lua, в частности конфигурационные файлы, которые легко могли бы быть обычными json файлами. У кого-то есть опыт работы с... https://www.cyberforum.ru/ cpp-beginners/ thread1786358.html | C++ Вектора и чтение из файла и обратно (File IO) Ребят! Помогите как сможете! Я никак не могу связать перечисления между собой( И еще никак не могу сделать так, чтобы каждый раз, когда программа запускается читать все продукты из файла. /*... https://www.cyberforum.ru/ cpp-beginners/ thread1786334.html |
C++ Из Excel в SQL есть файл ексель, мне надо его полностью(ну кроме названия) переписать в скрипт три столбца +---+----+-----+ | A | B | C | +---+----+-----+ |код|назв|кодр| +---+-----+----+ ... |
C++ Обработка считывания текста из файла с завершающей пустой строкой Вроде бы вопрос простой - используй fstream и живи спокойно. Так и было до поры, до времени. Был такой код: double tmp; vector<double> data; ifstream inFile("recdata.txt"); while(!inFile.eof())... https://www.cyberforum.ru/ cpp-beginners/ thread1786316.html |
16495 / 8988 / 2205
Регистрация: 30.01.2014
Сообщений: 15,611
|
|
28.07.2016, 09:33 | 0 |
Как правильно освободить память - C++ - Ответ 940791928.07.2016, 09:33. Показов 1515. Ответов 3
Метки (Все метки)
![]() Решение
d7d1cd, зависит от стечения обстоятельств (реализации компилятора и стандартной библиотеки, режима компиляции) и типа элементов. Может быть как все нормально, так и, например, аварийное завершение программы. Поведение не определено.
Добавлено через 19 минут d7d1cd, вот, например, демонстрация аварийного завершения программы, собранной в clang: http://rextester.com/STBI88613 В данном случае происходит так потому, что реализация new закладывается на определенные соглашения. В частности, размер блока памяти от менеджера памяти, выделяется чуть больше, с таким запасом, чтобы хватило для дополнительного размещения значения типа size_t. Это значение используется для хранения количества элементов. Размещается оно в начале выделенной области памяти, а пользователю (то есть программисту) возвращается смещенный на sizeof(size_t) указатель, который указывает на собственно данные. delete[] знает об этом, и выполнит обратное действие: сместится назад на sizeof(size_t) получит количество элементов, обеспечит вызов соответствующего числа деструкторов, а затем отдаст указатель на выделенный блок памяти менеджеру памяти для освобождения. Если же использовать delete , то ничего этого не произодет. Будет попытка вызова одного деструктора, а затем указатель будет передан менеджеру памяти для освобождения. Но т.к. это неверный указатель (менеджер памяти не возвращал нам его: указатель был искусственно получен путем смещения на sizeof(size_t)) то корректно освободить память он не сможет, что в данном случае приводит к аварийному завершению программы.
Вернуться к обсуждению: Как правильно освободить память C++
1
|
|
28.07.2016, 09:33 | |
Готовые ответы и решения:
3
Как правильно освободить память
|
28.07.2016, 09:33 | |
Помогаю со студенческими работами здесь
0
Динамическая матрица. Как правильно освободить память? Подскажите пожалуйста, как правильно освободить память Как правильно освободить память после работы с динамическим массивом Как освободить память? |