Определить, сколько памяти выделил malloc под массив - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Подскажите, пожалуйста, можно ли узнать, сколько памяти выделено под массив, на который ссылается указатель, к примеру int *array ? Суть проблемы в том, что есть файл, в котором на первой строке записано кол-во строк матрицы, на второй строке файла - кол-во столбцов матрицы, далее записана сама матрица (строка матрицы в отдельной строке файла). Все это дело считывается в одномерный массив структур (в структуре хранится позиция элемента в двумерной матрице и само значение элемента)
typedef struct Matrix {
    int row;
    int column;
    double val;
} Matrix;
После считывания первых двух строк из файла, создаю указатель Matrix *values на массив структур и маллочу нужное кол-во памяти. И есть заголовок функции, которую надо реализовать
double get_elem(Matrix* matrix, int row, int col);
В эту функцию передается сам массив структур, строка и столбец элемента, который надо получить. В нее НЕ передается ни кол-во элементов, ни кол-во строк и столбцов в исходной двумерной матрице. Оперируя этими данным необходимо как-то вытащить элемент из одномерного массива. Организовать цикл не получается, потому что не знаю его границ. Думал, может можно как-то узнать размер памяти, которую выделяет malloc и от этого как-то отталкиваться. PS. заголовок функции менять нельзя. Поля структуры можно
Ошибся, поля структуры тоже менять нельзя. Они прописаны в задании.

Решение задачи: «Определить, сколько памяти выделил malloc под массив»

textual
Листинг программы
double get_elem(Matrix* matrix, int row, int col);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.5 из 5
Похожие ответы