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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
dairand
0 / 0 / 0
Регистрация: 19.11.2009
Сообщений: 5
#1

Освобождение указателей двумерного массив. - C++

19.12.2009, 14:00. Просмотров 1200. Ответов 4
Метки нет (Все метки)

Возникает ошибка времени выполнения при освобождении. Что не так?
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
#include "stdafx.h"
#include <iostream>
using namespace std;
 
typedef int*        pArray;
typedef pArray*     p2Array;
 
int main( )
{
  int       row;
  int       column;
  p2Array   massiv;
  int                 i, j;
 
  cout << "Input count row." << endl;
  cout << "row = "; 
  cin >> row; 
 
  cout << "Input count column." << endl;
  cout << "column = "; 
  cin >> column; 
 
  massiv = (p2Array)malloc(row*sizeof(pArray));
  for(i=0; i<column; i++)
    *(massiv+i) = (pArray)malloc(column*sizeof(int));
 
  .......................
 
  for(i=0; i<column; i++) 
     free(*(massiv+i));
  free(massiv);
  return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2009, 14:00     Освобождение указателей двумерного массив.
Посмотрите здесь:

Освобождение динамического двумерного массива указателей - C++
Доброго времени суток. Подскажите как правильно очистить память после вот такого выделения: MyClass _class = new MyClass **; ...

Как работает массив указателей на строки двумерного массива? - C++
Есть работающий код: void main() { int matrix; for(i = 0; i &lt; 3; i++) { for(int j = 0; j &lt; 5; j++) { matrix...

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

Освобождение памяти из под Объектов в статическом массиве указателей - C++
Всем добрый вечер! Решил расширить программу из книжки Лафорте Р. ООП в С++ стр. 574 путем добавления функции удаления данных о конкретном...

Динамическая загрузка и освобождение памяти для двумерного массива - C++
Всем добрый день:victory: У меня возник небольшой вопрос , и надеюсь что отзывчивые форумчане 8-) помогут мне с ним разобраться. ...

Как правильно записать в виде функции выделение памяти для двумерного массива и ее освобождение - C++
Здравствуйте! Подскажите, как правильно записать в виде функции выделение памяти для двумерного массива и ее освобождение. ...

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

Как выделить память для двумерного массива указателей в куче? - C++
Есть массив вида: unsigned char *ddtКак выделить память для такого массива в куче? Должен получиться двумерный массив указателей. Сами...

Массив, освобождение памяти - C++
что я сделал не так? #include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;iostream&gt; ...

Массив: Освобождение выделенной памяти - C++
Сказали переделать код, нужно что бы память освобождалась не в отдельной функции а как то по другому так и не понял как. #include...

Освобождение памяти и работа с 2 указателями на массив - C++
Пользователь вводит числа, которые поступают в массив. Длина массива неизвестна, а использовать большие массивы запрещено. Вопрос, можно ли...

Освобождение памяти, выделенной под массив - C++
Выделяю память под массив: int (*array_1) = new int; как освободить то, что выделил? И еще вопрос: как указателю...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
19.12.2009, 14:14     Освобождение указателей двумерного массив. #2
А в чем ошибка выражается? Что требутся выполнить в программе? У меня в DEV-C++ 4.9.9.2 нет ошибок времени выполнения этой программы.
dairand
0 / 0 / 0
Регистрация: 19.11.2009
Сообщений: 5
19.12.2009, 14:38  [ТС]     Освобождение указателей двумерного массив. #3
Visual Studio 2008. Ошибка: #204 HEAP CORRUPTION DETECTED.(Мне перевод понятен.)
Когда комментирую освобождение в for ошибка изчезает. Но я ж тогда оставляю не освобожёнными указатели?

Добавлено через 14 минут
Почему данный код проходит, а выше приведенный нет?
C++
1
2
3
4
5
6
7
8
9
10
  int **arr;
  arr =(int**)malloc(row*sizeof(int*));
    for (i = 0; i < row; i++)
        arr[i] = (int*)malloc(column*sizeof(int));
 
// ......................................
 
  for(i=0; i<column; i++) 
    free(massiv[i]);
  free(massiv);
CyBOSSeR
Эксперт C++
2299 / 1669 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
19.12.2009, 14:51     Освобождение указателей двумерного массив. #4
Цитата Сообщение от dairand Посмотреть сообщение
C++
1
for(i=0; i<column; i++)
Не верно. Нужно:
C++
1
for(i=0; i<row; i++)
dairand
0 / 0 / 0
Регистрация: 19.11.2009
Сообщений: 5
19.12.2009, 14:57  [ТС]     Освобождение указателей двумерного массив. #5
Глупо... Присмотревшись на отличие всё становится на свои места. Спасибо Aye Aye за проявленный интерес.
C++
1
2
3
4
5
6
7
8
9
  massiv = (p2Array)malloc(row*sizeof(pArray));
  for(i=0; i<row; i++)
    *(massiv+i) = (pArray)malloc(column*sizeof(int));
 
  .......................
 
  for(i=0; i<row; i++) 
     free(*(massiv+i));
  free(massiv);
Добавлено через 3 минуты
Извенения CyBosser у, пока писал ответ уже выставлен. Молодец!!!
Yandex
Объявления
19.12.2009, 14:57     Освобождение указателей двумерного массив.
Ответ Создать тему
Опции темы

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