Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
1 / 1 / 1
Регистрация: 02.06.2012
Сообщений: 39
1

Освобождение памяти после динамического массива

04.06.2012, 21:19. Показов 3662. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть динамический массив, но почему-то на строке delete[] FirstPoint; студия (2010) пишет что-то про попытку записи в память после конца кучи (перевод несколько вольный). В чем проблема?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"
#include <iostream>
 
int main()
{
int size;
std::cin>>size;
getchar();
int *FirstPoint = NULL;  
FirstPoint=new int[size];
for (int count = 0; count<=size; count++)
    {
    FirstPoint[count]=count; 
    std::cout<<FirstPoint[count]<<" "<<&FirstPoint[count]<<std::endl;
    }
delete[] FirstPoint;
FirstPoint=NULL;
getchar();
return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2012, 21:19
Ответы с готовыми решениями:

Освобождение памяти у динамического массива char
Добрый день. Имеем код: class _ArrayChar { typedef int Ivalue; typedef char* Pchar;...

Освобождение памяти динамического массива. Деструктор
Почему выдает ошибку при написании деструктора? Если его убрать, то все работает. #pragma once ...

Освобождение памяти динамического массива структур
Поставлена следующая задача: сделать любую структуру, сгененировать в неё рандомные данные,...

Освобождение памяти для динамического масива типа char
Здравствуйте, помогите пожалуйста разобраться с одним моментом. При освобождении памяти двумерного...

5
1321 / 983 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
04.06.2012, 21:26 2
У меня ничего не пишет. У тебя ошибка в строке
C++
1
for (int count = 0; count<=size; count++)
надо

C++
1
for (int count = 0; count< size; count++)
1
1 / 1 / 1
Регистрация: 02.06.2012
Сообщений: 39
04.06.2012, 21:32  [ТС] 3
и правда, спасибо


Добавлено через 3 минуты
И чтобы не создавать новую тему спрошу здесь же:

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
#include "stdafx.h"
#include <iostream>
 
int main()
{
int size;
std::cin>>size;
getchar();
int *FirstPoint = NULL;  
FirstPoint=new int[size];
for (int count = 0; count<size; count++)
    {
    FirstPoint[count]=count; 
    std::cout<<FirstPoint[count]<<" "<<&FirstPoint[count]<<std::endl;
    }
delete[] FirstPoint;
FirstPoint=NULL;
 
int *SecondPoint = NULL;  
SecondPoint=new int[size];
for (int count = 0; count<size; count++)
    {
    SecondPoint[count]=count; 
    std::cout<<SecondPoint[count]<<" "<<&SecondPoint[count]<<std::endl;
    }
delete[] SecondPoint;
SecondPoint=NULL;
getchar();
return 0;
}
Такой код будет являться некорректным, т.к. память, взятая из кучи и уже использовавшаяся для массива FirstPoint, будет использоваться второй раз для массива SecondPoint или все нормально?
0
157 / 157 / 27
Регистрация: 29.03.2012
Сообщений: 418
04.06.2012, 21:37 4
непонятно что вас смущает.. все нормально в этом коде
0
1 / 1 / 1
Регистрация: 02.06.2012
Сообщений: 39
04.06.2012, 21:41  [ТС] 5
да, почитал получше, просто запутался с понятиями
После вызова delete объект, указывающий на этот участок памяти, становится некорректным и не должен больше использоваться.
0
157 / 157 / 27
Регистрация: 29.03.2012
Сообщений: 418
04.06.2012, 21:44 6
ну да, нельзя обращаться к памяти на которую он ссылался, но присвоить ему другой адрес можно
1
04.06.2012, 21:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.06.2012, 21:44
Помогаю со студенческими работами здесь

Ошибка очистки памяти после ввода динамического массива char
Уважаемые форумчане, помогите, пожалуйста. Вроде такой темы на форуме нет. Нужно, дословно, по...

Освобождение динамического двумерного массива указателей
Доброго времени суток. Подскажите как правильно очистить память после вот такого выделения: ...

Резервирование памяти/освобождение памяти для трехмерного массива
Необходимо создать трехмерный массив (A), в котором элементы вдоль направления Z выли бы выровнены...

Динамическая загрузка и освобождение памяти для двумерного массива
Всем добрый день:victory: У меня возник небольшой вопрос , и надеюсь что отзывчивые форумчане 8-)...

Освобождение памяти (удаление массива char) и raised exception class EAccessViolation
Подскажите плиз, есть программа, вот кусок AnsiString inputText; int inputTextLength;...

Как правильно записать в виде функции выделение памяти для двумерного массива и ее освобождение
Здравствуйте! Подскажите, как правильно записать в виде функции выделение памяти для двумерного...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru