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

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

28.11.2012, 00:27. Просмотров 281. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Динамический массив (C++):

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

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

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

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

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

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

5
Croessmah
++Ͻ
14163 / 8088 / 1514
Регистрация: 27.09.2012
Сообщений: 19,937
Записей в блоге: 3
Завершенные тесты: 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
++Ͻ
14163 / 8088 / 1514
Регистрация: 27.09.2012
Сообщений: 19,937
Записей в блоге: 3
Завершенные тесты: 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
Привет! Вот еще темы с решениями:

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

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

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

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


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

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

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