глюк с _msize
От: Аноним  
Дата: 20.05.04 07:42
Оценка:
У меня свой менеджер памяти. В нем я юзаю _msize. Так вот. В Win2000 прога ни с того ни с сего вылетает на этом самом _msize. Скажите, это функция железно работает на всех OS? Спасибо
Re: глюк с _msize
От: Аноним  
Дата: 20.05.04 08:03
Оценка:
Поясню в чем глюк. Возвращается число, больше того, что было выделено
Re[2]: глюк с _msize
От: Дмитрий Бл-й Россия  
Дата: 20.05.04 08:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Поясню в чем глюк. Возвращается число, больше того, что было выделено

_msize никакого отношения к OS не имеет.
Это нестандартная функция C/C++ RTL от M$VS.
Возвращает реальное число выделенных malloc-ом байтов, которое может быть больше запрошенного, так как malloc округляет запрошенное число в бОльшую сторону до кратного какой-то степени двойки (4 байта, 8 байт).
Типа: size = (size + 3) & ~3
Re[3]: глюк с _msize
От: Аноним  
Дата: 20.05.04 08:52
Оценка:
Здравствуйте, Дмитрий Бл-й, Вы писали:

ДБЙ>Здравствуйте, Аноним, Вы писали:


А>>Поясню в чем глюк. Возвращается число, больше того, что было выделено

ДБЙ>_msize никакого отношения к OS не имеет.
ДБЙ>Это нестандартная функция C/C++ RTL от M$VS.
ДБЙ>Возвращает реальное число выделенных malloc-ом байтов, которое может быть больше запрошенного, так как malloc округляет запрошенное число в бОльшую сторону до кратного какой-то степени двойки (4 байта, 8 байт).
ДБЙ>Типа: size = (size + 3) & ~3

А это не связано с настройками компилятора насчет выравнивания структур? Или он всегда так выравнивает?
Re[4]: глюк с _msize
От: Блудов Павел Россия  
Дата: 22.05.04 02:49
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>А это не связано с настройками компилятора насчет выравнивания структур? Или он всегда так выравнивает?


malloc ничего про структуры не знает. Его просят выделить N байт,
а он выделяет N + M, для выравнивания в общем и целом.
_msize вот это N + M и возвращает.

Про выравниване одной одтельно взятой структуры знает sizeof.

Павел.
... << RSDN@Home 1.1.3 beta 2 >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.