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

резервирование памяти/освобождение памяти для трехмерного массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Стрелочные часы http://www.cyberforum.ru/cpp-beginners/thread673236.html
Разработать приложение, отображающее движение часовой, минутной и секундной стрелок часов. Циферблат в виде окружности снабжен метками часов. Когда положение секундной и часовой стрелок совпадают, раздается звуковой сигнал (или выводится сообщение).
C++ Интеграл.Метод трапеции Помогите пожалуйста с данной задачей,с интегралами вообще не знаком и если можно дайте за одно ссылки где можно почитать про них. http://s019.***********/i638/1210/61/13dfae5f2124.jpg http://www.cyberforum.ru/cpp-beginners/thread673229.html
Найти номер элемента из массива А, с которого массив В начинается как подпоследовательность C++
Помогите, пожалуйста, написать программу, которая находила бы номер элемента из массива А, с которого массив В начинается как подпоследовательность(массивы ввести с клавиатуры): к примеру А {1 3 5 35 23 4 0} B {5 35 23 } в этом случае программа должна вывести 2, если подпоследовательности нет, то программаа должна вывести нет вхождений Спасибо
C++ Удалить все строки матрицы, которые содержат нули
Дана квадратная матрица целых числе N*N(N-константа), заданная случайным образом, числами из промежутка от -10 до 5. Удалить все строки матрицы, которые содержат нули.Записать в файл исходную и конечную матрицы. вот моя задача. Помогите найти ошибку.Она удаляет только одну строку, а не все program matrica; const n=5; var i,j,x,k,t,kol:integer; input,output:text; a:arrayof...
C++ Использование рекурсии http://www.cyberforum.ru/cpp-beginners/thread673178.html
Написать программу, рекурсивно вычисляющую сумму: Найти сумму ряда с точностью , общий член которого равен . Точность считается достигнутой, если следующий член последовательности меньше заданного .
C++ проверить попадает ли х в промежуток аб, причём если а больше б поменять их местами Условия:Нужно проверить попадает ли х в промежуток аб, причём если а больше б поменять их местами , если попадает, вывести на экран "Подходит", если нет то "Неподходит" подробнее

Показать сообщение отдельно
Mike_Texnik
4 / 4 / 0
Регистрация: 25.03.2011
Сообщений: 28

резервирование памяти/освобождение памяти для трехмерного массива - C++

17.10.2012, 13:37. Просмотров 1504. Ответов 17
Метки (Все метки)

Необходимо создать трехмерный массив (A[Nx][Ny][Nz]), в котором элементы вдоль направления Z выли бы выровнены по 16 байт.

Есть две проблемы:

1. Как скрестить строку вроде
C++
1
float *Uz __attribute__ ((aligned(16))) = (float*)_mm_malloc(Nz * sizeof(float), 16);
С кодом типа (то есть как корректно подставить выше написанную строчку вместо строки 8):

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
float ***U = (float ***)malloc(Nx * sizeof(float **));
     for(i = 0; i<=Nx; i++)
     {
         U[i] = (float **)malloc(Ny * sizeof(float *));
         for(j = 0; j <=Ny; j++)
         {
                      U[i][j] = (float *) malloc(Nz * sizeof(float));
         }
     }


2. Как корректно очистить память после выполнения программы?

Вот такая связка приводит к ошибке во время очистки памяти:

Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <malloc.h>
 
const int Nx=108,Ny=103,Nz=250;
float ***U = (float ***)malloc(Nx * sizeof(float **));
float ***U0 = (float ***)malloc(Nx * sizeof(float **));
int k,i,j;
 
int main()
{
 
    //выделяем память
     for(i = 0; i<=Nx; i++)
     {
         U[i] = (float **)malloc(Ny * sizeof(float *));
         U0[i] = (float **)malloc(Ny * sizeof(float *));
         for(j = 0; j <=Ny; j++)
         {
               U[i][j] = (float *) malloc(Nz * sizeof(float));
               U0[i][j] = (float *) malloc(Nz * sizeof(float));
         }
     }
    
 
    //очищаем память
     for(i = 0; i<=Nx; i++)
     {
         for(j = 0; j <=Ny; j++)
         {
               free(U[i][j]);
               free(U0[i][j]);
         }
     }
 
    free (U); free(U0);
    return 0;
}


Вылетает сообщение:
Миниатюры
резервирование памяти/освобождение памяти для трехмерного массива  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru