Я выделил "массив" 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
, но я бы предпочел, если это возможно. Любые идеи?