пакет flextable назначает изменения без < -

К сожалению, действительно удивительный alloca() отсутствует из почти удивительного tcc. Gcc имеет alloca().

  1. Он сеет семя своего собственного уничтожения. С возвратом в качестве деструктора.
  2. Как и malloc(), он возвращает недопустимый указатель на fail, который будет segfault на современных системах с MMU (и, надеюсь, перезапустить их без).
  3. В отличие от авто переменные вы можете указать размер во время выполнения.

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

Если вы слишком сильно нажимаете, вы уверены в segfault (если у вас есть MMU).

Обратите внимание, что malloc() больше не предлагает, поскольку возвращает NULL (который также будет segfault, если назначен), когда система не работает. То есть все, что вы можете сделать, это залог или просто попытаться назначить его любым способом.

Чтобы использовать malloc(), я использую глобальные переменные и назначаю их NULL. Если указатель не равен NULL, я освобожу его, прежде чем использовать malloc().

Вы также можете использовать realloc() в качестве общего случая, если хотите скопировать любые существующие данные. Вам нужно проверить указатель перед тем, как это сделать, если вы собираетесь копировать или конкатенировать после realloc().

3.2.5.2 Преимущества alloca

3
задан RAB 16 January 2019 в 02:14
поделиться

1 ответ

Это правда, что вы можете изменять форматы, не назначая объект. Но это не то поведение, на которое вы можете положиться. Это нежелательный дизайн;) и должен быть исправлен в следующих версиях, чтобы было безопаснее присвоить результат, если вы хотите, чтобы ваш код работал с будущими версиями.

0
ответ дан David Gohel 16 January 2019 в 02:14
поделиться
Другие вопросы по тегам:

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