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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Используя поиск в ширину в графе выделить связаные копоненты неориентированного графа http://www.cyberforum.ru/cpp-beginners/thread601628.html
Вот поиск в ширину кратчайшего рсстояния. А как его переделать что бы выделяло компоненты неориентированного графа. Вообще незнаю как помогите пожалуйста. //--------------------------------------------------------------------------- #pragma hdrstop #include <vector> #include <stdio.h> #include <queue> #include <iostream>...
C++ Описать структуру с именем AEROFLOT Описать структуру с именем AEROFLOT , содержащую следующие поля: * название пункта назначения рейса; * номер рейса; * тип самолета; Написать программу, выполняющую следующие действия: * ввод с клавиатуры данных в массив, состоящий из семи элементов типа AEROFLOT; записи должны быть размещены в алфавитном порядке по названиям пунктов назначения; * вывод на экран пунктов назначения и... http://www.cyberforum.ru/cpp-beginners/thread601626.html
Задача на файлы C++
1. Багаж пассажира характеризуется количеством вещей и общим весом вещей. Дан файл Bagazh, содержащий сведения о багаже нескольких пассажиров. Сведения о багаже каждого пассажира представляют собой запись с двумя полями: одно поле целого типа (количество вещей) и одно — действительное (вес в кило-граммах). Найти багаж, средний вес одной вещи в котором отличается не более чем на 0,3 кг от общего...
C++ Численно убедится есть ли заданная функция парной или непарной
Численно убедится есть ли заданная функция y = f (x) парной или непарной на заданном отрезке . Высчитать ошибку вычисления и возможные точки разрыва функции. Проверить, например для функций y = x^4, y = tg x, y = e^x выполняя их вычисления на отрезке с шагом 0.1 ( парность - это четность ) Пожалуйста помогите с задачей я в тупике=( bool pair = true; for (double x=0; x<5; x += 0.1) if...
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 не умеет оптимизировать этот процесс.
 
Текущее время: 22:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru