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

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

Войти
Регистрация
Восстановить пароль
 
SlayZar
Сообщений: n/a
#1

Освобождение памяти в C++ - C++

27.02.2014, 20:39. Просмотров 424. Ответов 1
Метки нет (Все метки)

Добрый день!
В моей программе в функции выделяется память (new char) под символьный массив, который является элементом структуры. Это делается через вектор, в который помещены элементы структуры. Затем уже функции main( ) требуется освободить память, но не могу понять как это сделать. Нужно создать указатель на первый элемент или как то еще?

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
struct TestA 
{
     char faculty[lenname]; 
     int examn[2*lenex-2]; 
     char * letters; 
     double sredn; 
}
 
int _tmain(int argc, _TCHAR* argv[])
{ 
    setlocale(LC_ALL,"Russian");
    vector<TestA> vec1;
        int  massGrades [numarr]; 
 
    
        makelett (vec1, massGrades);
    
    //здесь требуется освободить память
 
    
...
            vec1.clear();
};
 
...
void makelett(vector<TestA>& vect, int *arr)
 {
for (int i=0; i<numarr-1; i++)
            vect[i].letters = new char (arr[i]);
...
}
Помогите пожалуйста, на что надо создать указатель и что надо написать после delete[]
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2014, 20:39     Освобождение памяти в C++
Посмотрите здесь:

C++ Освобождение памяти
C++ Освобождение памяти
Освобождение памяти C++
C++ освобождение памяти
с++ Освобождение памяти C++
C++ Освобождение памяти
C++ Освобождение памяти в c++
Освобождение памяти C++
C++ Освобождение памяти
Освобождение памяти в списках C++
C++ Освобождение памяти
C++ Правильное освобождение памяти

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1479 / 1055 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
27.02.2014, 21:31     Освобождение памяти в C++ #2
C++
1
2
3
4
5
6
7
8
void deletelett(vector<TestA>& vect)
{
  for (int i=0; i<numarr-1; i++)
  {
    delete vect[i].letters;
    vect[i].letters = 0;
  }
}
не совсем понятно зачем выделять один символ.
если выделять массив, то
C++
1
2
3
vect[i].letters = new char [arr[i]];
удалять потом так:
    delete [] vect[i].letters;
еще лучше использовать вместо этого std::string или std::vector<char> - само поудаляется.
Yandex
Объявления
27.02.2014, 21:31     Освобождение памяти в C++
Ответ Создать тему
Опции темы

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