Когда вы вызываете C malloc
, есть ли гарантия относительно того, какими будут первые несколько младших битов? Если вы пишете компилятор / интерпретатор для динамического языка, но хотите иметь фиксированные числа в форме bbbbbbbb bbbbbbbb. . . bbbbbbb1
(где b - бит) и указатели вида bbbbbbbb bbbbbbbb. . . bbbbbbb0
(или наоборот), есть ли способ гарантировать, что malloc
вернет указатели, подходящие для такой схемы?
Должен ли я просто выделить на два байта больше, чем мне нужно, увеличить вернуть значение на единицу, если необходимо, чтобы соответствовать битовой схеме, и сохранить фактический указатель, возвращаемый malloc
, во втором байте, чтобы я знал, что бесплатно
?
Могу ли я я просто предположим, что malloc
вернет указатель с нулем в качестве последнего бита? Могу ли я предположить, что x86 будет иметь два нулевых бита в конце и что x64 будет иметь четыре нулевых бита в конце?