В настоящее время я работаю над интерпретатором в образовательных целях и хочу, чтобы интерпретатор мог выделять выровненную память кучи.
Инструкции моего интерпретатора могут содержать адреса к этой памяти кучи, и поскольку я хочу, чтобы он был немного безопасным, я хотел бы ограничить пользователя только адресной памятью, которая была выделена интерпретатором.
Поэтому я попытался написать свой собственный распределитель кучи, который работает поверх malloc
и realloc
, с целью иметь возможность выделить блоки в непрерывной области памяти, чтобы ограничить доступ к этому единственному блоку большой кучи.
Теперь возникла проблема: поскольку я использую realloc
, интерпретаторы память может перемещаться, и дополнения, которые я добавил в распределитель кучи, могут больше не быть правильными.
Я немного растерялся; Есть ли способ portable , как я мог бы безопасно предоставить интерпретатору согласованные возможности выделения памяти?