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

C++

Войти
Регистрация
Восстановить пароль
 
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
#1

Нюансы динамической памяти - C++

17.12.2009, 20:00. Просмотров 536. Ответов 0
Метки нет (Все метки)

вобщем у меня очень непонятная трабла. есть двумерный массив из объектов класса NET. в классе NET есть небольшой массив указателей на объекты класса Object. массив NET инициализируется так:

C++
1
2
3
4
5
6
NET** Object::net=new NET* [Object::NET_n];
for (int i=0;i<Object::NET_n;i++)
{
    Object::net[i]=new NET[100];
    for (int j=0;j<100;j++) Object::net[i][j]=NET (i-500,j);
}
конструкторы NET:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
NET::NET(float x,float y)
{
    int N=100;
    objs=new Object* [N];
    tcs=new tck* [N];
    n=0;
 
    a=new tck;
    b=new tck;
    c=new tck;
    d=new tck;
    
    a->reload (x,y,0,NULL);
    b->reload (x+1,y,0,NULL);
    c->reload (x+1,y+1,0,NULL);
    d->reload (x,y+1,0,NULL);
}

и черезвычайно странным образом получается, что строчки

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Object::net[500][99].objs==Object::net[500][1].objs;
    Object::net[500][97].objs==Object::net[500][1].objs;
    Object::net[500][99].objs==Object::net[500][3].objs;
    Object::net[500][57].objs==Object::net[500][1].objs;
    Object::net[500][99].objs[0]==Object::net[500][1].objs[0];
 
    Object::net[501][99].objs==Object::net[501][1].objs;
    Object::net[501][97].objs==Object::net[501][1].objs;
    Object::net[501][99].objs==Object::net[501][3].objs;
    Object::net[501][57].objs==Object::net[501][1].objs;
    Object::net[501][99].objs[0]==Object::net[501][1].objs[0];
 
 
    Object::net[501][99].objs!=Object::net[500][99].objs;
    Object::net[501][99].objs!=Object::net[500][1].objs;
    Object::net[501][99].objs!=Object::net[501][98].objs;
и им подобные возвращаю true. то есть все ссылки на экземпляры класса Object, находящиесе в экземпляре класса NET в нечетных строчках каждого столбца почемуто все указывают на одну и ту жеобласть памяти (в каждом столбце соответственно) например:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Object::net[500][99].objs==0x06a80248;
Object::net[500][97].objs==0x06a80248;
Object::net[500][57].objs==0x06a80248;
Object::net[500][1].objs ==0x06a80248;
Object::net[500][3].objs ==0x06a80248;
 
 
Object::net[501][99].objs==0x06aad608;
Object::net[501][97].objs==0x06aad608;
Object::net[501][57].objs==0x06aad608;
Object::net[501][1].objs ==0x06aad608;
Object::net[501][3].objs ==0x06aad608;
 
Object::net[501][2].objs ==0x06aadd28;
если чото непонятно спрашивайте... главное проявите внимание очень нужно решение этой проблемы
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.12.2009, 20:00     Нюансы динамической памяти
Посмотрите здесь:

Нюансы выделения и освобождения памяти (структуры) - C++
struct point { int a; point *next; } point *p=new point Я освобожу всю память которая отводилась под динам. структуру? delete...

Выделение динамической памяти - C++
Добрый вечер. Помогите разобраться пожалуйста! Суть такова: есть файл, в нем есть данные, мне надо их оттуда считать и вывести на...

Выделение динамической памяти - C++ Builder
Задан граф в виде матрицы смежности вершин. Найти число компонент связности в этом графе. Программа сделанная,но надо выделить...

Удаление динамической памяти - C++
В книгах по С++ я читал про утечку памяти. Я решил создать программу, в которой будет выделаться 1 Гб памяти и не удаляться. Будучи...

Освобождение динамической памяти - C++
После первого вызова функции(при повторном) пишет ошибку. В функции sort один из элементов массива становится недоступным для чтения. Если...

одкладка динамической памяти - C++ Linux
Привет всем! какой код нужно написать для динамической одкладки ? пользуюсь eclipse...пробывал такой код откомпилировать FILE*...

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

Массив в динамической памяти - C++
какая разница между int *x=new int(10); и int *x=new int; ?

Очередь в динамической памяти - C++ Builder
Привет всем, реализую очередь с помощью двух связного списка, можно добавить, удалить и просмотреть элементы, уже всю программу написал...

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

Вопрос по динамической памяти - C++
мне надо создать масив содержащий структуры. У меня вот код какой: vec *fild;//vec это название структуры конструктор ...

Выделение динамической памяти - C++
Всем доброго времени суток. Прошу помочь с задачей. Задача решена, просто нужно переделать её с выделением динамической памяти. ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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