У меня возникла проблема с распределением нужного размера памяти в моей программе. Я делаю следующее:Выделение необходимого объема памяти
void * ptr = sbrk(sizeof(void *)+sizeof(unsigned int));
Когда я делаю это, я думаю, что это добавляет слишком много памяти в куче, потому что выделяет его в единицах аннулируются * вместо байтов. Как я могу сказать, что хочу sizeof (независимо от), чтобы обозначить независимо от того, байт вместо что угодно другие единицы?
EDIT:
Я видел другие люди бросили вещи как полукокса, так что компилятор имеет размер в байтах. Если sizeof (unsigned int) - 4 байта, но тип, который я использовал, равен void *, будет ли компилятор в 4 раза меньше размера void * вместо 4 байтов?
Можете ли вы пояснить, почему вы добавляете 'sizeof (void *)' здесь? Что вы планируете делать с этой памятью? Кроме того, любая причина, по которой вы не используете plain-ol '' malloc' здесь? – templatetypedef
Короткий ответ: либо вы знаете, что делаете, и вам не нужно задавать этот вопрос, либо вы не знаете, что делаете, и вы не должны использовать 'sbrk()', а скорее 'таНос()'. –
Я избегаю malloc, потому что я экспериментирую с некоторыми системными вызовами (например, sbrk()), и я пытаюсь сохранить указатель любого типа и целое число без знака в этом блоке памяти, которое я добавил в кучу – mrswmmr