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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
hamin
174 / 155 / 74
Регистрация: 21.11.2012
Сообщений: 630
#1

Динамический массив - C++

04.05.2013, 16:08. Просмотров 293. Ответов 6
Метки нет (Все метки)

есть примерно такая функция:

C++
1
2
3
4
5
6
7
8
9
10
int *funktion (int size){
 
int *g = new int [size];
 
 
... //функция работы с дин. массивом
 
 
return g;
}
таким образом я возвращаю из функции динамический массив. все данные этого массива присваиваются далее в программе другому массиву. Так вот, подскажите пожалуйста как мне освободить память для дин. массива, созданного в функции.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.05.2013, 16:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Динамический массив (C++):

Можно ли в классе создавать массив переменной длинны. Например динамический массив? - C++
Динамические массивы привлекают больше. :)

динамический массив (Целое число разложить на массив простых множителей) - C++
Доброго времени суток всем. Целое число необходимо разложить на массив простых множителей. Столкнулся с проблемой, мне нужно, чтобы...

Заполнить динамический массив из файла и записать массив обратно в файл - C++
Подскажите пожалуйста функцию которая будет заполнять Динамический массив из файла и обратную которая этот массив запишет в файл=)

Написать функцию принимающую массив и возвращающую указатель на динамический массив - C++
Написать функцию принимающую массив и возвращающую указатель на динамический массив содержащий первые n нaибольших чисел. Как сделать...

Массив: передать динамический массив в функцию и записать в каждый элемент строку из файла - C++
задача: передать динамический массив в функцию, и записать в каждый элемент строку из файла. количество строк известно вот что у меня...

Как преобразовать массив в динамический? Массив вычисляет сумму элементов каждой диагонали матрицы - C++
Ошибка : Вызвано исключение по адресу 0x00BB2F4F в Проект6.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0xFDFDFE05. #...

6
Василицк
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 18
04.05.2013, 16:10 #2
delete [] g;
если не ошибаюсь
0
hamin
174 / 155 / 74
Регистрация: 21.11.2012
Сообщений: 630
04.05.2013, 16:19  [ТС] #3
ну да, только где его писать?
0
Василицк
0 / 0 / 0
Регистрация: 23.04.2013
Сообщений: 18
04.05.2013, 16:21 #4
там где заканчиваешь работать с массивом, я обычно пишу в конце

C++
1
2
3
4
5
6
7
delete [] a;
delete [] q;
 
system ("pause");
 
return 0;
}
0
Croessmah
Эксперт CЭксперт С++
13409 / 7559 / 853
Регистрация: 27.09.2012
Сообщений: 18,601
Записей в блоге: 3
Завершенные тесты: 1
04.05.2013, 16:26 #5
Цитата Сообщение от hamin Посмотреть сообщение
ну да, только где его писать?
Там, где станет ясно, что данная память более не понадобится.

А вообще, возвращать буфера наружу не есть хорошо.
0
hamin
174 / 155 / 74
Регистрация: 21.11.2012
Сообщений: 630
04.05.2013, 16:28  [ТС] #6
ну так если я возвращаю массив из функции программа его не увидит с именем g,
к примеру:

C++
1
2
3
4
5
6
7
8
9
10
main () {
size = 10;
int *h = new int [size];
 
h = funktion (size);
 
delete [] h; 
 
return 0;
}
как теперь освободить память массива, созданного в функции?? если напишу delete [] g; выдаст ошибку, так как область видимости массива в пределах функции
0
Croessmah
Эксперт CЭксперт С++
13409 / 7559 / 853
Регистрация: 27.09.2012
Сообщений: 18,601
Записей в блоге: 3
Завершенные тесты: 1
04.05.2013, 16:31 #7
У Вас же написано:
Цитата Сообщение от hamin Посмотреть сообщение
C++
1
delete [] h;
Оператору delete[] важен адрес начала выделенной памяти, а не имя переменной.

Добавлено через 36 секунд
Только тут у Вас утечка.

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
main () {
size = 10;
int *h = new int [size];//Выделили память
//Здесь нужен delete [] h;
h = funktion (size);//Перезаписали указатель, теперь у нас нигде нет адреса выделенной до этого памяти - утечка
 
delete [] h;//Удаляем h. Первое же выделение так и остается висеть. 
 
return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.05.2013, 16:31
Привет! Вот еще темы с ответами:

Создать динамический массив (Если чётных чисел больше, то массив должен быть укорочен на 2 элемента) - C++
Создать динамический массив из 8 случайных целых чисел из отрезка и вывести его на экран . Если в массиве чётных чисел оказалось...

Массив и память. Как создать динамический массив? - C++
не могу исправить ошибки. И нужен динамический массив я что-то попробовала для его создания но ничего не вышло #include "stdafx.h" ...

Двумерный массив (поменять статический массив на динамический) - C++
Нужно поменять статический массив на динамический с выделением памяти #include <iostream> #include <iomanip> #include <cstdlib> ...

Переделать динамический массив на статический массив - C++
#include <iostream> #include <cstdlib> using namespace std; int main() { int dim, counter_1 = 1, counter_2 =...


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

Или воспользуйтесь поиском по форуму:
7
Yandex
Объявления
04.05.2013, 16:31
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru