crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Посчитать количество элементов в sizeof
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Влад Дата 3.2.2010, 11:20
  Если в этом хедере есть поле, отвечающее за число карт - пусть называется chart_count, то new MAC4ChartHeader[chart_count];
Но в общем имей в виду, что MAC4ChartHeader* pChartsList = new MAC4ChartHeader[/*<размер массива>*/]; небезопасно в смысле потери ресурсов (памяти и хз еще чего) при исключениях. Поэтому лучше оберни в вектор или shared_array или собственный класс, реализующий RAII.
AD Дата 3.2.2010, 11:17
 
Цитата(Влад @ 3.2.2010, 11:12) *
MAC4Header какую структуру имеет?

Не могу сказать. Единственное - в ней присутствует поле, отвечающее за количество структур MAC4ChartHeader.
Влад Дата 3.2.2010, 11:12
  MAC4Header какую структуру имеет?
AD Дата 3.2.2010, 10:35
  Имеется несколько априори определенных структур. Это - MAC4Header и MAC4ChartHeader. Их размеры, соответственно - sizeof(MAC4Header), sizeof(MAC4ChartHeader).
Мне необходимо узнать размер динамического массива в следующей строчке:
// Где-то ранее
CMappingView view;

///////////////////////////
MAC4ChartHeader* pChartsList = reinterpret_cast<MAC4ChartHeader*>(view.pChar() + sizeof(MAC4Header));


Для того, чтобы понимать это за view, то приведу структуру описания view.
class CMappingView
{
private:
    PVOID pvAddress;
public:
    CMappingView(): pvAddress(NULL) {}
    CMappingView(PVOID pv): pvAddress(pv) {}
    CMappingView(CMappingView& mv): pvAddress(mv.pvAddress) { mv.pvAddress = NULL; }
    virtual ~CMappingView() { Close(); }
    operator PVOID() { return pvAddress; }
    char* pChar() { return static_cast<char*> (pvAddress); }
    short* pShort() { return static_cast<short*> (pvAddress); }
    int* pInt() { return static_cast<int*> (pvAddress); }
    long* pLong() { return static_cast<long*> (pvAddress); }
    bool Invalid() { return pvAddress == NULL; }
    CMappingView& operator=(CMappingView& mv);
    BOOL Init(PVOID pv);
    BOOL Close();
};


MAC4ChartHeader* pChartsList - Это всего лишь динамический массив, к элементам которого потом идет обращение через индекс. В старой программе он определен так, как я указал выше. Мне просто надо знать сколько элементов следует выделить под этот массив, поэтому я прошу помочь разобраться в этой строке:
// Где-то ранее
CMappingView view;
///////////////////////////
MAC4ChartHeader* pChartsList = reinterpret_cast<MAC4ChartHeader*>(view.pChar() + sizeof(MAC4Header));

Сейчас я хочу сделать так:
MAC4ChartHeader* pChartsList = new MAC4ChartHeader[/*<размер массива>*/];

Заранее спасибо!


Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 5.7.2025, 5:06