У меня проблема с выделением правильного размера памяти в моей программе. Я делаю следующее:
void * ptr = sbrk(sizeof(void *)+sizeof(unsigned int));
Когда я это делаю, я думаю, что это добавляет слишком много памяти в кучу, потому что она выделяет ее в единицах void * вместо байтов. Как мне сказать, что я хочу, чтобы sizeof (something) означал any байтов вместо любых других единиц?
РЕДАКТИРОВАТЬ:
Я видел, как другие люди приводили вещи как символы, чтобы компилятор принимал размер в байтах. Если sizeof (unsigned int) составляет 4 байта, но тип, который я использовал, void *, будет ли компилятор сломать в 4 раза размер void * вместо 4 байтов?
sizeof(void*)
? Что вы собираетесь делать с этим воспоминанием? Кроме того, есть ли причина, по которой вы не используете здесь plain-ol 'malloc
? - person templatetypedef   schedule 14.02.2012sbrk()
, а лучшеmalloc()
. - person Kerrek SB   schedule 14.02.2012sizeof
возвращает размер в байтах. Я не понимаю, о чем вы спрашиваете. Вы пробовали распечатать полученный размер, чтобы проверить, соответствует ли он вашим ожиданиям? - person jweyrich   schedule 14.02.2012