Существует ли способ переопределить malloc во время ссылки в Windows?

Если вы хотите, чтобы структура имела определенный размер с GCC, например, используйте __attribute__((packed)) .

В Windows вы можете установить выравнивание в один байт при использовании cl .exe компилятор с опцией / Zp .

Обычно ЦП получает доступ к данным, который является кратным 4 (или 8), зависящей от платформы, а также от компилятор.

Итак, это вопрос выравнивания в основном.

У вас должны быть веские причины для его изменения.

9
задан Jazz 23 September 2008 в 12:22
поделиться

3 ответа

Существует действительно хорошее обсуждение того, как трудно это здесь:

http://benjamin.smedbergs.us/blog/2008-01-10/patching-the-windows-crt/

По-видимому, необходимо исправить CRT

Править: на самом деле сотрудник MS дал технику в обсуждении. Необходимо переместить malloc в lib и затем связать его перед CRT

"он также упоминает, что, если Вы связываете свой malloc как lib перед CRT (т.е. удостоверяетесь, что включили, ‘игнорируют значение по умолчанию, освобождает’, и explictly включают CRT), Вы получите то, что Вы хотите и можете перераспределить этот lib без проблем".

16
ответ дан 4 December 2019 в 10:34
поделиться

Я думаю, что это зависит, в котором порядке Вы связываете файлы. Я думаю, что необходимо связать пользовательскую функцию сначала, затем библиотека импорта.

2
ответ дан 4 December 2019 в 10:34
поделиться

От версии 3.0 Firefox использует пользовательское средство выделения (AFAIR jmalloc) - Вы могли проверить, как они сделали это. Я считал, что у них были некоторые проблемы с ним. Можно проверить это сообщение в блоге.

1
ответ дан 4 December 2019 в 10:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: