@mbcsoft

Возможно ли узнать сколько памяти отдано указателю?

Всем привет.

1) Пример массива:
char *a = (char *) calloc(X, sizeof(char));

Возможно ли как-то узнать, не зная значения X, сколько памяти отдано указателю a?

2) Имея массив такого вида:
char a[] = {1, 2, 3, 4, 5, 6} //определен глобально (вне ф-ий)

Возможно ли узнать сколько памяти он занимает, не зная количества элементов в нем?
  • Вопрос задан
  • 771 просмотр
Решения вопроса 2
gbg
@gbg
Любые ответы на любые вопросы
Формально, компилятор где-то запоминает, сколько он выделил памяти, и скорее всего, делает это где-то в байтах до указателя, но практически, на это полагаться нельзя.

Во втором случае, sizeof(a)/sizeof(a[0]);
Ответ написан
@fadsend
Размер массива, аллоцированного через calloc, malloc можно узнать с помощью специальных функций, различных для каждой ОС. К примеру, для линукса этот размер можно узнать с помощью вызова malloc_usable_size. Ссылка: https://stackoverflow.com/questions/1281686/determ...
Размер второго массива узнать через sizeof(a) / sizeof(a[0]).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@hobo-mts
Shortly
Для Visual C++ 6.0
#include <malloc.h>
size_t _msize( void *memblock ); // Returns the size of a memory block allocated in the heap.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы