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

как освободить только первый элемент массива, не трогая остальные? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Используя поиск в ширину в графе выделить связаные копоненты неориентированного графа http://www.cyberforum.ru/cpp-beginners/thread601628.html
Вот поиск в ширину кратчайшего рсстояния. А как его переделать что бы выделяло компоненты неориентированного графа. Вообще незнаю как помогите пожалуйста....
C++ Описать структуру с именем AEROFLOT Описать структуру с именем AEROFLOT , содержащую следующие поля: * название пункта назначения рейса; * номер рейса; * тип самолета; Написать программу, выполняющую следующие действия: *... http://www.cyberforum.ru/cpp-beginners/thread601626.html
Задача на файлы C++
1. Багаж пассажира характеризуется количеством вещей и общим весом вещей. Дан файл Bagazh, содержащий сведения о багаже нескольких пассажиров. Сведения о багаже каждого пассажира представляют собой...
C++ Численно убедится есть ли заданная функция парной или непарной
Численно убедится есть ли заданная функция y = f (x) парной или непарной на заданном отрезке . Высчитать ошибку вычисления и возможные точки разрыва функции. Проверить, например для функций y = x^4,...
C++ Не видит класса string http://www.cyberforum.ru/cpp-beginners/thread601616.html
Вопрос чисто технический: в VisualStudio 2010 создал тестовый проект. В нём создал файл Class1.h, в нём текст: #pragma once #include <string> class Class1 { public: string val;
C++ Подскажите пожалуйста как выполнить с использованием матрицы и сделать программу z = (a-b)+++-(a+++-3a++b) { cout << z << end; подробнее

Показать сообщение отдельно
Jtalk
93 / 79 / 4
Регистрация: 13.05.2011
Сообщений: 279
09.06.2012, 22:22
Цитата Сообщение от AnyOne697 Посмотреть сообщение

Легко. Указатель не обнуляется.
Код C++1 2 3 4 5 6 int main(){ int *a = new int[12]; delete a++; //была освобождена память для первого элемента return 0; }
Впрочем, я не уверен в возможности сего. Когда использовал, утечек не наблюдалось. Но использовал в небольшой программе - просто хотел немного оптимизировать.
В данном случае память очистит ОС после закрытия приложения. В стандарте C++ (по крайней мере старом) четко было написано, что модифицировать указатель, выданный new[], нельзя, т.к. это вызовет ошибки при использовании delete[]. Соответственно, удалять память "кусками" можно только если приложение маленькое и небольшие утечки не страшны.


Сложность работы с ними не обуславливает плохую работу. Си просто идеально работает с массивами. Кроме массивов в Си просто ничего нет ;-)
структуры, перечисления, объединения, функции, etc.
А как еще обозначить плохую работу? Что угодно можно сделать библиотеками, удобство работы с массивами — это в первую очередь качество их поддержки языком. А C дальше указателей на память массивы никогда не поддерживал.

Добавлено через 1 минуту
Цитата Сообщение от Ksan Посмотреть сообщение
Jtalk, realloc медленно работает? вы уверены?
По сравнению с инкрементом указателя? На порядки. realloc просто выделяет новый кусок памяти и делает memcpy куска старой памяти в новую. Соответственно, замедление зависит от объема выделяемой и копируемой памяти. Насколько я помню, realloc не умеет оптимизировать этот процесс.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru