Стопка сигнала

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

Как следствие, небезопасно рассматривать его как указатель без индексации. например :

pArray = nullptr; // This is a memory leak, unless a copy is taken, but otherwise fine.
array = nullptr; // This is will make the compiler upset
5
задан Thunderboltz 8 May 2009 в 20:01
поделиться

2 ответа

Причина, по которой сигналы нуждаются в отдельном стеке, заключается в том, что, если нормальный стек поврежден или переполнен, сигнал все еще может выполняться. Я думаю, что стек сигналов обычно распределяется динамически, но это может быть реализовано в любом случае. Вы можете установить новый стек сигналов с помощью sigaltstack . Он одинаков для всех сигналов.

3
ответ дан 15 December 2019 в 01:10
поделиться
[

] Другой, более эзотерической причиной является создание потоков пользовательского уровня. См. статью Ральфа Энгельшала "Портативная многопоточность": []http://www.gnu.org/software/pth/rse-pmt.ps[]. В ней описывается, как "трюк с сигнальным стеком на батуте" используется для осуществления потоков пользовательского уровня.[

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

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