Здравствуйте Sasparella, вы писали:
S>Здравствуйте Nik, вы писали:
Nik>>У меня выделяется двойной массив: Nik>>char** array; Nik>>Затем для него выделяется какое-то количество памяти. Вопрос: как можно узнать его размер уже после выделения?
S>DWORD dwSize = sizeof(*array); S>DWORD dwTotalSize = dwSize; S>for (int i = 0; i< dwSize; i++) S> dwTotalSize += sizeof(array[i]);
S>Чтото вроде этого.....
! — так не сработает. sizeof() определяется во время компиляции, так что sizeof(*array) и sizeof(array[i]), однозначно вернут 4 для 32-bit системы
Что-бы узнать размер выделенной понями, надо знать что использовалось в операторе new, то есть если например там используется GlobalAlloc, то размер можно узнать при помощи GlobalSize, но потенциально тут могут быть подводные камни — размер блока памяти может быть выравнен, и быть больше размера массива. Так что для общего C++ случая, проще завести отдельные переменные, в которой хранить размерности массива. Или просто использовать STL вектор — там размер можно узнать всегда