Я выделил «массив» размером mystruct
n
, например:
if (NULL == (p = calloc(sizeof(struct mystruct) * n,1))) {
/* handle error */
}
Позже я имею доступ только к p
и больше не имею n
. Есть ли способ определить длину массива только по указателю p
?
Я полагаю, что должно быть возможным, поскольку free(p)
делает именно это. Я знаю, malloc()
следит за тем, сколько памяти он выделил, и поэтому он знает длину; возможно есть способ запросить эту информацию? Что-то вроде ...
int length = askMallocLibraryHowMuchMemoryWasAlloced(p) / sizeof(mystruct)
Я знаю, что должен просто переработать код, чтобы я знал n
, но я бы предпочел, чтобы это было невозможно. Есть идеи?