Как автоматизировать такой процесс выделения памяти? - C (СИ)
Формулировка задачи:
Скажите пожалуйста, как автоматизировать такой процесс выделения памяти?
double* m01 = (double*)::malloc( windows_size *sizeof(double)); double* m02 = (double*)::malloc( windows_size *sizeof(double)); double* m03 = (double*)::malloc( windows_size *sizeof(double)); double* m04 = (double*)::malloc( windows_size *sizeof(double)); ....................
Решение задачи: «Как автоматизировать такой процесс выделения памяти?»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int main() { unsigned char *img_data; unsigned char **img_data_rows; int row_n,rows,cols; FILE* out; rows = 32; cols =16; img_data = (unsigned char*)malloc(rows*cols); img_data_rows = (unsigned char **)malloc(rows*sizeof(unsigned char *)); for(row_n=0;row_n<rows;row_n++) { img_data_rows[row_n] = img_data+row_n*cols; } for(row_n=0;row_n<rows;row_n++) { memset(img_data_rows[row_n],row_n,cols); } out = fopen("test.dat","wb"); fwrite(img_data,rows*cols,1,out); fclose(out); return 0; }
Объяснение кода листинга программы
- В коде представлены две переменные типа unsigned char: img_data и img_data_rows.
- Переменная img_data выделена с помощью функции malloc и содержит данные изображения.
- Переменная img_data_rows выделена с помощью функции malloc и содержит указатели на строки данных изображения.
- Затем происходит инициализация массива img_data_rows с помощью цикла for.
- Каждый элемент массива img_data_rows указывает на отдельную строку данных изображения, которая находится в памяти с помощью формулы img_data + row_n * cols.
- Затем происходит заполнение каждой строки изображения значениями row_n с помощью функции memset.
- После этого происходит запись данных изображения в файл с помощью функции fwrite.
- В конце программы происходит закрытие файла с помощью функции fclose.
- Программа возвращает 0, что означает успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д