Re[2]: Двойной массив
От: ZORK Россия www.zorkaltsev.com
Дата: 31.08.01 15:14
Оценка:
Здравствуйте 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 вектор — там размер можно узнать всегда
Думать надо ...головой :)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.