Другие ответили на широкие штрихи вполне прилично, таким образом, я добавлю несколько деталей.
Стек и "куча" не должны быть исключительными. Общая ситуация, в которой у Вас есть больше чем один стек, состоит в том, если у Вас есть больше чем один поток в процессе. В этом случае каждый поток имеет свой собственный стек. У Вас может также быть больше чем одна "куча", например, некоторые конфигурации DLL могут привести к другому DLLs, выделяющему от различной "кучи", который является, почему это обычно - плохая идея освободить память, выделенную другой библиотекой.
В C можно извлечь пользу из выделения переменной длины с помощью alloca, который выделяет на стеке, в противоположность выделению, которое выделяет на "куче". Эта память не переживет Ваш оператор возврата, но это полезно для буфера царапины.
Создание огромного временного буфера в Windows, из которого Вы не используете большую часть из, не является бесплатным. Это вызвано тем, что компилятор генерирует цикл датчика стека, который называют каждый раз, когда Ваша функция вводится, чтобы удостовериться, что стек существует (потому что Windows использует единственную защитную страницу в конце Вашего стека для обнаружения, когда это должно вырастить стек. При доступе к памяти больше чем одна страница от конца стека, Вы откажете). Пример:
void myfunction()
{
char big[10000000];
// Do something that only uses for first 1K of big 99% of the time.
}
Из Wictionary :
Я предполагаю, что значение в компьютерных терминах происходит из того факта, что программа - это то, что записывается в компьютер перед запуском программы, в отличие от данных , которые считываются, обрабатываются и затем записываются обратно.
Пройдя немного дальше с комментариями №, я нашел отсканированную версию из Руководства по программированию GE-635 , и обнаружил следующее в разделе о макроассемблере:
Макроассемблер GE-625/635 является предоставляется, чтобы дать профессиональные программисты некоторые из удобство компилятора и гибкость ассемблера. [...] параметры вывода позволяют ему получить двоичный текст в перемещаемом, а также абсолютные форматы.
Таким образом, похоже, что использование «двоичного текста» было разговорным языком GE или, возможно, широко используемым термином в то время (помните, что это были дни, когда считыватели карт / перфораторы использовались для большого количества операций ввода-вывода) . Итак, одним из возможных путей является GE, к Multics через GE-645, к Unix через работу Bell Labs над Multics, к Linux.
Может быть, потому, что программный код, будь то трудные для чтения машинные инструкции, на самом деле является программным текстом - т.е. текстом, который содержит инструкции? То же, что когда вы называете книгу по математике учебником, хотя ее довольно сложно расшифровать, если вы не знакомы с математическими символами, которые представляют собой код ..