Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452

Удаление динамического массива

25.03.2015, 18:30. Показов 1459. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!!!

Столкнулся со следующей проблемой.

В литературе оговоренно, что для удаления всего массива из динамической памяти, нужно применять оператор

delete [] a; я пишу delete a; (32 строка) в результате вижу что в ячейках теперь муссор.

Это свидетельствует ли о том, что все ячейки освобожденны ?

Почему во всех ячейках мусор при выполнении delete a;?

я же освобождаю по сути только 0-ю ячкйку массива.

________________________________________ ____________

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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <stdio.h>
#include <conio.h>
 
int main()
{
 
    int *a=new int[5],i,*c,*k;
 
    
 
    for(i=0,c=a;i<5;i++,c++)
 
    {
        printf("\n ***** %p  \n",c);
 
        scanf("%d",c);
 
        
    }
 
    printf("\n&&&&&&&&&&&&&&&&&&&\n");
 
    for(i=0,c=a;i<5;i++,c++)
 
    {
        printf("\n ***** %p  %d  %p  %d\n",&a[i],a[i],c,*c);
 
    
    
    }
    
    delete a;
 
    //a=0;
 
    printf("\n ***** !!!!!! %p  \n",a);
 
    for(i=0,c=a;i<5;i++,c++)
 
    {
        printf("\n *****   %d  %p\n",*c,c);
    }
 
    getch();
 
    return 0;
}
Миниатюры
Удаление динамического массива  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.03.2015, 18:30
Ответы с готовыми решениями:

Удаление динамического массива
Добрый день, уважаемые форумчане! Столкнулся со следующей проблемой, реализовал алгоритм перебора перестановок или размещений с...

Удаление динамического массива
Здравствуйте! Имеем код: #include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;cstdlib&gt; using namespace...

Удаление динамического массива
Привет. Сделал программу с 3 динамическими массивами, но дело в том, что 2 из них, размер которых задается с клавиатуры, удаляются в конце...

6
21 / 21 / 13
Регистрация: 28.04.2013
Сообщений: 85
26.03.2015, 20:37
для встроенных типов данных типа int, bool, char итд delete a; будет удалять весь выделенный массив, в остальных случаях не факт, и следует использовать delete[] для удаления массива. То есть, все верно у тебя получилось.
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
27.03.2015, 14:01  [ТС]
следующий фрагмент это подтверждает.....



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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <stdio.h>
#include <conio.h>
 
 
    
 
int main()
{
 
    int *a=new int[5],i,*c,*k;
 
    
 
    for(i=0,c=a;i<5;i++,c++)
 
    {
        printf("\n ***** %p  \n",c);
 
        scanf("%d",c);
 
        
    }
 
    printf("\n&&&&&&&&&&&&&&&&&&&\n");
 
    for(i=0,c=a;i<5;i++,c++)
 
    {
        printf("\n ***** %p  %d  %p  %d\n",&a[i],a[i],c,*c);
 
    
    
    }
    
    delete a;
 
    //a=0;
 
    printf("\n ***** !!!!!! %p  \n",a);
 
    for(i=0,c=a;i<5;i++,c++)
 
    {
        printf("\n *****   %d  %p\n",*c,c);
    }
 
    printf("\n ***** \n");
 
    
    int *n=new int[5];
    
    for(i=0,c=n;i<5;i++,c++)
 
    {
        printf("\n ***** %p  \n",c);
    }
 
     getch();
 
    return 0;
}
ну , а если тип массива нестандартный ?

к примеру массив обьектов.
Миниатюры
Удаление динамического массива  
0
21 / 21 / 13
Регистрация: 28.04.2013
Сообщений: 85
27.03.2015, 22:19
Цитата Сообщение от RAFA91 Посмотреть сообщение
а если тип массива нестандартный ?
Цитата Сообщение от sklad1002 Посмотреть сообщение
следует использовать delete[] для удаления массива
вроде все понятно написал же
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
27.03.2015, 22:55
Цитата Сообщение от RAFA91 Посмотреть сообщение
я пишу delete a; (32 строка) в результате вижу что в ячейках теперь муссор.
Всея стандарт:
5.3.5 Delete
2. <...>In the first alternative (delete object), the value of the operand of delete may be a null pointer
value, a pointer to a non-array object created by a previous new-expression, or a pointer to a subobject (1.8)
representing a base class of such an object (Clause 10). If not, the behavior is undefined. In the second
alternative (delete array), the value of the operand of delete may be a null pointer value or a pointer
value that resulted from a previous array new-expression. If not, the behavior is undefined.
Никаких додумываний в стиле
Цитата Сообщение от sklad1002 Посмотреть сообщение
для встроенных типов данных типа int, bool, char итд delete a; будет удалять весь выделенный массив, в остальных случаях не факт,
Только UB! Правильное поведение - частный случай UB. Удаление первого элемента массива - UB.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
28.03.2015, 00:27
Цитата Сообщение от sklad1002 Посмотреть сообщение
для встроенных типов данных типа int, bool, char итд delete a; будет удалять весь выделенный массив
что тут у нас? опять чьи то влажные фантазии?


как выделяли, так и удаляем.
если выделяли через [], значит и удаляем через [].
иначе - UB.
0
 Аватар для RAFA91
-28 / 35 / 25
Регистрация: 14.06.2013
Сообщений: 1,452
24.11.2015, 17:01  [ТС]
Подскажите пожалуйста почему при выполнении

C++
1
2
3
4
int *p;
    int *a = new int[5];
    p=a+4;
    delete p;
получаю аварийное завершение ?

пытаюсь освободить последнюю ячейку
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.11.2015, 17:01
Помогаю со студенческими работами здесь

Удаление динамического массива
Создаю динамический массив целых чисел. Хотелось бы после его создания научиться удалять его, то есть освобождать память. #include...

Удаление динамического массива
Доброго времени суток! Задача такова, что надо организовать бесконечный ввод в массив. Ввод прекращается после 0. Возникла проблема:...

Удаление динамического массива
есть динамический массив: double** Mas2 = new double*; for(int i=0;i&lt;=kol2;i++) Mas2=new double; Как удалить данный массив...

Удаление динамического массива
Здравствуйте! Имею следующий вопрос: создаётся массив таким образом: int elCount = 10; double* x = new double;

Удаление динамического массива
доброго времени суток. написал программу, в которой создается динамический массив. с ним проводим определенные операции, а в конце надо его...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru