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

Перезапись динамического массива - C++

Восстановить пароль Регистрация
 
lenar_lesnik
 Аватар для lenar_lesnik
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 7
22.04.2014, 19:54     Перезапись динамического массива #1
Вот фрагмент программы создания двоичного файла , мы задаем динамический массив, который должен использоваться в других пунктах, следовательно, не надо освобождать память, но при повторе этого пункта надо освободить память.
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
62
63
64
65
66
67
68
69
70
71
72
if (ch == '1')
        {
            system("cls");
            cin.clear();
            cin.sync();
            char ch1;
            cout << "Введите имя нового файла: ";
            getline(cin, FNAME);
            ifstream f(FNAME, ios_base::binary);
            bool e = f.fail();
            if (!e)
            {
                system("cls");
                cout << "Файл с таким именем существует!" << endl << "Хотите перезаписать файл (Y|N):" << endl;
                ch1 = _getch();
                if ((ch1 == 'y') || (ch1 == 'Y'))
                {
                    e = true;
                }
                else if ((ch1 == 'n') || (ch1 == 'N'))
                {
                    f.close();
                    break;
                }
            }
                if (e)
                {
                    f.close();
                    ofstream f(FNAME, ios_base::binary);
                    system("cls");
                    cout << "Введите количество элементов массива: ";
                    cin >> kol;
                    while (kol <= 0 || kol > 10 || cin.fail())
                    {
                        system("cls");
                        cin.clear();
                        cin.sync();
                        cout << "Введен недопустимое количество элементов!" << endl;
                        cout << "Введите количество элементов массива: ";
                        cin >> kol;
                    }
                    int *a = new int[kol];//тут мы задаем динамический массив
                    if (!a)
                    {
                        cout << "Память не выделена!";
                        break;
                    }
                    else
                    {
                        for (int i = 0; i < kol; i++)
                        {
                            system("cls");
                            cout << "Введите " << i + 1 << " элемент: ";
                            cin >> *(a + i);
                            while (cin.fail())
                            {
                                system("cls");
                                cin.clear();
                                cin.sync();
                                cout << "Введен неверный символ!" << endl;
                                cout << "Введите " << i + 1 << " элемент: ";
                                cin >> *(a + i);
                            }
                        }
                        for (int i = 0; i < kol; i++)
                            f.write((char *)&a[i], sizeof(int));
                        f.close();
                        cout << "Все элементы записаны в файл! Нажмите любую кнопку, чтобы выйти в меню!";
                        _getch();
                    }
                }
        }
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4281 / 3712 / 1247
Регистрация: 14.04.2014
Сообщений: 14,516
22.04.2014, 19:56     Перезапись динамического массива #2
Выделяешь new, освобождаешь delete.
lenar_lesnik
 Аватар для lenar_lesnik
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 7
22.04.2014, 20:07  [ТС]     Перезапись динамического массива #3
nmcf, я знаю как выделять и освобождать, надо при повторе этого фрагмента освободить память, перед тем как задать снова int *a = new int[kol];
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,164
Завершенные тесты: 1
22.04.2014, 20:19     Перезапись динамического массива #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
int *a=0;// где-нибудь в начале
...
if (a!=0)
{
    delete[] a;
    a=0;
}
a= new int[kol];//тут мы
lenar_lesnik
 Аватар для lenar_lesnik
0 / 0 / 0
Регистрация: 24.11.2013
Сообщений: 7
22.04.2014, 20:23  [ТС]     Перезапись динамического массива #5
zss, спасибо, в других случаях делал так, а тут как то не додумался
Yandex
Объявления
22.04.2014, 20:23     Перезапись динамического массива
Ответ Создать тему
Опции темы

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