Как я могу получитьразмер массива из указателя в C ?

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

Найдено 12 ответов:

How can I get the size of an array from a pointer in C?

http://stackoverflow.com/questions/232691/how-can-i-get-the-size-of-an-array-from-a-pointer-in-c

Посмотреть решение →