Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
OdessaNA
19 / 19 / 6
Регистрация: 10.01.2011
Сообщений: 241
1

Динамический массив

28.11.2012, 00:27. Просмотров 287. Ответов 5
Метки нет (Все метки)

Здравствуйте, друзья!
Застрял на освобождении памяти.
Вот код:
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
#include <iostream>
#include <conio.h>
using namespace std;
 
struct test{
    int a;
};
 
void main()
{
    int Size=3;
 
    test *array;
    array=new test[Size];
 
    int i=0;
    while(i!=10)
    {
        cin>>array[i++].a;
        if(i>3)
        {
            test *array_temp;
            array_temp=new test[i];
 
            for(int j=0; j<i-1; ++j)
                array_temp[j]=array[j];
    //работает до сих пор....
            delete [] array; 
 
            array=new test[i];
    
            for(int j=0; j<i; ++j)
                array[j].a=array_temp[j].a;
            
            delete [] array_temp;
        }
 
        for(int j=0; j<i; ++j)
            cout << ' ' << array[j].a;
 
        cout<<endl;
    }
 
    getch();
}
Подскажите, пожалуйста, где я допускаю ошибку???
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2012, 00:27
Ответы с готовыми решениями:

Динамический массив при наследовании, элементами которого являются объекты класса наследника динамический массив
Попробовал создать динамический массив, у которого элементы - объекты класса...

Динамический массив ,элементами которого являются объекты класса динамический массив
Доброго времени суток, захотел создать динамический массив ,элементами которого...

Создать динамический класс Book, содержащий динамический массив Authors
Мне нужно написать программу,а я не знаю как ее написать. Знаю, тут люди за ...

Скопировать динамический массив в другой массив только с положительными элементами из первого
Пользователь вводит размер массива и сам массив. Программа копирует в другой...

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

5
Croessmah
++Ͻ
14630 / 8379 / 1582
Регистрация: 27.09.2012
Сообщений: 20,583
Записей в блоге: 2
Завершенные тесты: 1
28.11.2012, 00:56 2
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
#include <iostream>
#include <conio.h>
using namespace std;
 
struct test{
    int a;
};
 
void main()
{
    int Size=3;
 
    test *array;
    array=new test[Size];
 
    int i=0;
    while(i!=10)
    {
        cin>>array[i++].a;
        if(i>=3)
        {
            test *array_temp;
            array_temp=new test[i+1];
 
            for(int j=0; j<i; ++j)
                array_temp[j]=array[j];
    //работает до сих пор....
            delete [] array; 
 
            array=new test[i+1];
    
            for(int j=0; j<i; ++j)
                array[j].a=array_temp[j].a;
            
            delete [] array_temp;
        }
 
        for(int j=0; j<i; ++j)
            cout << ' ' << array[j].a;
 
        cout<<endl;
    }
 
    getch();
}
1
OdessaNA
19 / 19 / 6
Регистрация: 10.01.2011
Сообщений: 241
28.11.2012, 01:07  [ТС] 3
Croessmah, спасибо огромное!
0
dimon22-99
0 / 0 / 3
Регистрация: 29.05.2012
Сообщений: 11
28.11.2012, 01:29 4
Мне кажется, что на первом витке цикла while array удачно освобождается, а на втором витке освобождается та же память, которая уже итак освобождена.
0
Croessmah
++Ͻ
14630 / 8379 / 1582
Регистрация: 27.09.2012
Сообщений: 20,583
Записей в блоге: 2
Завершенные тесты: 1
28.11.2012, 01:31 5
Цитата Сообщение от dimon22-99 Посмотреть сообщение
Мне кажется, что на первом витке цикла while array удачно освобождается, а на втором витке освобождается та же память, которая уже итак освобождена.
Чуть далее delete память снова выделяется. И ошибка была в выходе за пределы массива.
0
OdessaNA
19 / 19 / 6
Регистрация: 10.01.2011
Сообщений: 241
29.11.2012, 20:36  [ТС] 6
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 <iostream>
#include <conio.h>
using namespace std;
struct test{
    int a;
};
void main (){
 
    int Size=5;
    test *array=new test [Size];
    int i=0;
    while(i!=10)
    {
        cin >> array[i++].a;
        if(i>=Size)
        {
            test *array_test=new test[i+1];
            for(int j=0; j<i; ++j)
                array_test[j]=array[j];
            delete [] array;
            array = array_test;
        }
        for(int j=0; j<i; ++j)
            cout<< '\t' << array[j].a << ' ';
        cout <<  endl;
    }
    delete [] array;
 
    getch();
}
0
29.11.2012, 20:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2012, 20:36

Заполнить динамический массив из файла и записать массив обратно в файл
Подскажите пожалуйста функцию которая будет заполнять Динамический массив из...

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

Написать функцию принимающую массив и возвращающую указатель на динамический массив
Написать функцию принимающую массив и возвращающую указатель на динамический...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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