1) голый металл, который вы, вероятно, не хотите использовать malloc в первую очередь
2) на голом железе вы владеете этой памятью и управляете ею, поэтому вы единственный, кто может ответить на вопрос.
3) даже на не голом железе (windows, linux и т. д.) стек, попадающий в кучу или попадающий в пространство кода, не является чем-то, от чего вы обычно получаете защиту, вам нужно либо сообщить компилятору, если он поддерживает это, чтобы добавить еще тонну кода, или вы просто проектируете свое программное обеспечение правильно, чтобы не конфликтовать.
Какова ваша схема распределения памяти, что делает ваш код, как, если вы вообще сказали этому коду, из какого пространства он может выделять. Если компилятор вообще поддерживает это, вам может потребоваться сообщить компилятору, что пространство или среда выполнения указывают, где в настоящее время находится вершина кучи. Или, может быть, компилятор полагается на то, что это пространство заполнено шаблоном, и он проверяет шаблон перед выделением, что означает, что в таком случае на «голом железе» вам нужно будет заполнить эту память этим шаблоном. Прежде всего вам нужно выяснить, работают ли выходные данные компилятора в отношении предотвращения столкновения стека с данными или программным пространством, и если да, то каким образом.
Обычно вы знаете по дизайну вашей системы / программного обеспечения, насколько глубоким будет ваш стек в худшем случае, и исходя из этого, сколько памяти у вас осталось. По мере того, как вы разрабатываете, а затем реализуете, вы проверяете максимальную глубину стека, сколько оперативной памяти вам в конечном итоге нужно, и следите за тем, чтобы не было превышено количество оперативной памяти, доступной для этого процессора в этой системе.
На голом железе нет причин ожидать, что компилятор, библиотеки или другие инструменты сделают эту работу за вас.
person
old_timer
schedule
24.08.2016
malloc
. Вместо этого используйте пулы памяти, которые управляют фиксированным количеством блоков памяти фиксированного размера. - person user3386109   schedule 24.08.2016malloc
часто не существует. Если он существует, проверьте документацию, откуда он взялся. - person user253751   schedule 24.08.2016malloc(0)
может возвращатьNULL
и не подразумевает нехватку памяти. YMMV. - person chux - Reinstate Monica   schedule 24.08.2016malloc
в системах, гдеmalloc
либо недоступен, либо не подходит для использования. Это была бы почти любая система, в которой нет ОС. - person user3386109   schedule 24.08.2016heap
. в файле link.cmd (обычно) не указано, где именно разместитьheap
, но часто указано, какого размера сделатьheap
. - person user3629249   schedule 25.08.2016