Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Физическая структура двух-мерных массивов

Поиск:
Цитата(Royan @ 25.2.2006, 16:56 Найти цитируемый пост)
Daevaorn, Мне казалось, что в любом массиве элементы располагаются друг за другом. А можешь объяснить, в чем отличие динамического массива от статического с физической точки зрения, откуда там возникает утечка?

В двухмерном массиве, созданом не динамически, члены массива идут один за другим. Пример:
Код

char ch[2][2]={"c","a"};

Вот вырезка, как этот массив разместился у меня в памяти:
Цитата

0012FF7C  63 00 61 00

Теперь расмотрим динамический массив. В первую размерность записываются не данные, а адреса на вторую размерность. Во второй размерности уже записываются сами данные.
Пример:
Код

char **ch=new char *[2];
for (int i=0; i<2; i++) ch[i]=new char[2];
ch[0][0]='c';
ch[0][1]=0;
ch[1][0]='a';
ch[1][1]=0;

После выполнения в самой переменной ch был записан адрес на выделенную память.
Цитата

00322908  50 29 32 00 98 29 32 00

Это так выгледела первая размерность.
Так выгледит вторая размерность
Цитата

00322950  63 00
00322998  61 00

Если ты даеш memset для двухмерного динамического массива в твоем случае, то ты просто напросто затираеш ссылки на вторую размерность. И последуюшие попытки обрашения ко второй размерности должны привести к вылету программы.
Добавлено @ [mergetime]1140882521[/mergetime]
Если ты хочеш обнулять вторую размерность, нужно делать
Код

for(int i = 0; i < col - 1; i++) {
memset(mx[i],0, sizeof(double)*row);
}
Автор: Fin
Сайт: http://






Просмотров: 3387

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную