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

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

Войти
Регистрация
Восстановить пароль
 
OdessaNA
19 / 19 / 0
Регистрация: 10.01.2011
Сообщений: 241
#1

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

28.11.2012, 00:27. Просмотров 263. Ответов 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();
}
Подскажите, пожалуйста, где я допускаю ошибку???
Спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2012, 00:27     Динамический массив
Посмотрите здесь:

Динамический массив. - C++
Есть такой момент в программе: ... char *r; int a,b,c,dl_len; ... printf(&quot;a= &quot;); scanf(&quot;%d&quot;,&amp;a); printf(&quot;b= &quot;); ...

Динамический массив - C++
Привет всем!Помогите разобратса в задаче по теме МНОГОМЕРНЫЕ ДИНАМИЧЕСКИЕ МАССИВЫ. 1.Напишите функцию для обращения двумерного...

Динамический массив - C++
помогите решить задачу пожалуйста!!! нужно реализовать динамический массив и показать работу с ним: удаление, добавление, вставка...

Динамический массив - C++
Разработать класс содержащий: - компоненты данные - методы: а) конструктор по умолчанию; б) конструктор с параметрами; в)...

Динамический массив - C++
Здравствуйте, помогите пожалуйста решить следующую задачу с применением динамичкского массива: Переставить столбцы вещественной...

Динамический массив - C++
Помогите занести слово &quot;dghf&quot; в массив методом push_back библиотеки vector Пока не получается.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 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();
}
OdessaNA
19 / 19 / 0
Регистрация: 10.01.2011
Сообщений: 241
28.11.2012, 01:07  [ТС]     Динамический массив #3
Croessmah, спасибо огромное!
dimon22-99
0 / 0 / 0
Регистрация: 29.05.2012
Сообщений: 11
28.11.2012, 01:29     Динамический массив #4
Мне кажется, что на первом витке цикла while array удачно освобождается, а на втором витке освобождается та же память, которая уже итак освобождена.
Croessmah
Модератор
Эксперт CЭксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 1
28.11.2012, 01:31     Динамический массив #5
Цитата Сообщение от dimon22-99 Посмотреть сообщение
Мне кажется, что на первом витке цикла while array удачно освобождается, а на втором витке освобождается та же память, которая уже итак освобождена.
Чуть далее delete память снова выделяется. И ошибка была в выходе за пределы массива.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2012, 20:36     Динамический массив
Еще ссылки по теме:

Динамический массив - C++
#include &lt;iostream.h&gt; #include &lt;iomanip.h&gt; int main() { int m,n,i,j,s; double **umas2,*b; cout&lt;&lt;&quot;n=&quot;; cin&gt;&gt;n; ...

Динамический массив - C++
Заполнить массив следующим образом: матрица n(n+1) 1 1 1 1 ... 1 1 1...

Динамический массив - C++
Составить программу. в которой создать динамический массив указателей для сохранения двумерного массива B с M×N целых чисел в динамичной...

Динамический массив - C++
Вроде все просто, но что-то я завис, ведь когда у меня динамически создается матрица: fnprcl=new AnsiString*; for(int i=0;i&lt;count2;i++)...

Динамический массив. - C++
Доброго вечера. Код представленный в 1 случае работает корректно. 1. случай. #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include...

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


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

Или воспользуйтесь поиском по форуму:
OdessaNA
19 / 19 / 0
Регистрация: 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();
}
Yandex
Объявления
29.11.2012, 20:36     Динамический массив
Ответ Создать тему
Опции темы

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