22 / 20 / 5
Регистрация: 11.02.2009
Сообщений: 383
1

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

17.12.2009, 20:00. Показов 921. Ответов 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;
если чото непонятно спрашивайте... главное проявите внимание очень нужно решение этой проблемы
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2009, 20:00
Ответы с готовыми решениями:

Инспектор динамической памяти процессов
Здравствуйте! Помогите пожалуйста. Нужно сделать &quot;Инспектор динамической памяти процессов&quot;. Может у...

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

Как избежать утечки памяти: нюансы использования QList
class T { QList&lt;bitset&lt;32&gt; &gt; bits; QList&lt;bitset&lt;32&gt; &gt; newList() { return...

Нюансы обучения: желание учесть все нюансы - корректность кода или overengineering?
Здравствуйте программисты! Ответьте пожалуйста на такой вопрос(объясните) Вот я учу С++ и решаю...

0
17.12.2009, 20:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2009, 20:00
Помогаю со студенческими работами здесь

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

Перераспределение динамической памяти
дан двумерный массив 3х5 выделить динамически память под него, затем перераспределить ее в массив...

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

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

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

Удаление new из динамической памяти
Здравствуйте, у меня есть следующее присвоение: sign-&gt;numb = new int; Мне нужно от него...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru