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

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

Восстановить пароль Регистрация
 
SlayZar
Сообщений: n/a
27.02.2014, 20:39     Освобождение памяти в C++ #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++ Освобождение памяти

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 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++
Ответ Создать тему
Опции темы

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