Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 1
Регистрация: 24.04.2014
Сообщений: 139
1

Высвобождение памяти для 3 измерения массива

15.12.2014, 15:30. Показов 632. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Не могу понять почему выходит ошибка. Я сделал 3х мерный массив, у которого 2 строки . Он неравномерный. В 1 строке 3 измерение из 2 ячеек, а во второй строке 1 ячейка.
ПРи высвобождении памяти ошибка. Помогите
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
46
47
48
49
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
float F(float x1, float x2);
void creator(float ****primary_table);
void destroyer(float ***primary_table);
int main()
{
    float ***primary_table;
    reator(&primary_table);
    destroyer(primary_table);
    return(0);
}
void creator(float ****primary_table)
{
    int i,j,t=2;
    *primary_table = (float***)malloc(2*sizeof(float**));
for(i=0;i<1;i++)
{
    (*primary_table)[i] = (float**)malloc(3*sizeof(float*));
    for(j=0;j<2;j++)
    {
        (*primary_table)[i][j]=(float*)malloc(t*sizeof(float));
    }
    t--;
}   
}
void destroyer(float ***primary_table)
{
int i,j,k,t;
for(i=0,t=2;i<2;i++)
{
    for(j=0;j<3;j++)
    {
        for(k=0;k<t;k++)free(primary_table[i][j][k]);
    }
    t--;
}
for(i=0;i<2;i++)
{
    for(j=0;j<3;j++)free(primary_table[i][j]);
}
for(i=0;i<2;i++)free(primary_table[i]);
free(primary_table);
}
float F(float x1, float x2)
{
    return(4*((x1-5)*(x1-5))+(x2-6)*(x2-6));
}
Добавлено через 6 минут
35 3 C:\Users\WORK\Desktop\mybooks\×èñëåííûå ìåòîäû\¹3 Ìåòîä äåôîðìèðîâàííîãî ìíîãîãðàííèêà\main.c [Error] incompatible type for argument 1 of 'free'
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2014, 15:30
Ответы с готовыми решениями:

Высвобождение динамической памяти
Нужна помощь, в проблеме высвобождения памяти, все делаю по стандартам С++, но постоянно выдает...

Долгое высвобождение памяти
Здравствуйте. Возможно, такой вопрос уже встречался, но ответа мне найти не удалось. Намахал...

Корректное высвобождение памяти в list
У меня все нормально работает, ну и по логике тоже вроде нормально, но намучился с Коректным...

Резервирование памяти/освобождение памяти для трехмерного массива
Необходимо создать трехмерный массив (A), в котором элементы вдоль направления Z выли бы выровнены...

3
шКодер самоучка
2227 / 1921 / 927
Регистрация: 09.10.2013
Сообщений: 4,260
Записей в блоге: 7
15.12.2014, 15:38 2
35я строка: проходится по ячейкам последнего измерения не надо, тк. они не содержат указателей на выделенную память
и нет разницы сколько там выделено памяти - 1 или 100
C
1
free(primary_table[i][j]);
Добавлено через 2 минуты
достаточно 2х циклов
C
1
2
3
4
5
6
7
8
9
10
void destroyer(float ***primary_table)
{
int i,j,k;
for(i=0;i<2;i++)
{
    for(j=0;j<3;j++)free(primary_table[i][j]);
    free(primary_table[i]);
}
free(primary_table);
}
0
0 / 0 / 1
Регистрация: 24.04.2014
Сообщений: 139
15.12.2014, 16:45  [ТС] 3
Цитата Сообщение от Cra3y Посмотреть сообщение
35я строка: проходится по ячейкам последнего измерения не надо, тк. они не содержат указателей на выделенную память
и нет разницы сколько там выделено памяти - 1 или 100
Спасибо, я этого не знал. Зарублю себе на носу. Только вот Программа падает. Подскажите в чём дело.
0
35 / 17 / 10
Регистрация: 13.12.2014
Сообщений: 107
15.12.2014, 17:21 4
Вот исправленный destroyer:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void destroyer(float ***primary_table)
{
    int i,j,k;
    for(i=0; i<1; i++)
    {
        for(j=0; j<2; j++)
        {
            free(primary_table[i][j]);
        };
        free(primary_table[i]);
    };
    free(primary_table);
};
0
15.12.2014, 17:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.12.2014, 17:21
Помогаю со студенческими работами здесь

Выделение памяти для массива через функцию и использование этого массива
Я определяю свою структуру, создаю динамический массив, где будут храниться элементы этой...

Функция для перевыделения памяти для массива
Доброго времени суток, пишу шаблонный класс для массива и никак не могу разобраться с динамическим...

Высвобождение памяти массивов
Доброго времени суток! Такой вопрос: Как освободить выделенную память под массивы arr1, arr2,...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru