Описание тега alloca
Alloca - это функция для динамического выделения памяти в стеке C. Такая память будет автоматически освобождена при выходе из функции.
6
ответов
Возвращая указатель на alloca
Этот код возвращает недопустимую ссылку на переменную, расположенную в стеке? Или что: void *f(size_t sz) { return alloca(sz); } Или это особый случай, который обрабатывается реализацией / поддержкой компилятора alloca, например f(alloca(size), allo…
13 авг '11 в 06:21
1
ответ
Почему нельзя использовать alloca в списке аргументов функции?
Цитируя второй абзац BUGS раздел, с manpage из alloca(3) На многих системах alloca() не может использоваться внутри списка аргументов вызова функции, потому что пространство стека зарезервировано alloca() появится в стеке в середине пространства для…
29 янв '17 в 10:03
2
ответа
Какова цель строки%"alloca point", которая встречается в коде llvm?
В последнее время я просматривал некоторую сборку LLVM, созданную llvm-gcc, и заметил повторяющееся утверждение, в котором я не уверен, для чего он предназначен. Например, следующая программа на C: int main(void) { void (*f)(void) = (0x21332); f(); …
21 авг '09 в 03:39
3
ответа
Это хорошая причина для использования alloca?
У меня есть следующая функция: double neville (double xx, size_t n, const double *x, const double *y, double *work); который выполняет интерполяцию Лагранжа в xx с использованием n очки хранятся в x а также y, work массив имеет размер 2 * n, Посколь…
30 апр '13 в 18:43
12
ответов
Можно ли предсказать переполнение стека в C на Linux?
Существуют определенные условия, которые могут вызвать переполнение стека в системе Linux x86: struct my_big_object[HUGE_NUMBER] в стеке. Проходя через это в конечном итоге вызывает SIGSEGV, alloca() рутина (как malloc(), но использует стек, автомат…
09 янв '09 в 06:08
1
ответ
Ошибка поиска символа: неопределенный символ: _alloca
Я строю общий объект (.so), который внутренне использует функцию _alloca() (определенную в malloc.h). Это.so компилируется плавно. Но как только я вызываю функцию, которая использует _alloca(), мое приложение вылетает с консольного вывода symbol loo…
30 авг '16 в 11:11
3
ответа
Выдает alloca() память, если выброшено исключение?
Я поддерживаю устаревшее приложение C++, которое, похоже, имеет медленную утечку памяти. Мне удалось "исправить" утечку памяти, убедившись, что текущая конфигурация больше не выдает никаких исключений, и я также могу вызвать утечку и масштабировать …
14 дек '18 в 09:59
2
ответа
C++ освобождает память "_alloca" из стека
Я знаю, что поведение _alloca заключается в освобождении памяти из стека, когда вы покидаете функцию. Есть ли способ освободить память раньше?
26 сен '12 в 09:52
1
ответ
Как получить адрес, буквально выделенный allocaInstr в llvm?
Я пытаюсь сделать некоторые инструменты над файлом ll. Одна из задач, которую я хочу достичь, заключается в следующем. Всякий раз, когда я встречаю AllocaInstr, как: %1 = alloca i32 Я хочу, чтобы инструмент функции call __save_addr() после этого сле…
01 июл '14 в 09:27
6
ответов
В каких случаях полезно использовать alloca()?
Зачем вам когда-либо хотеть использовать alloca(), когда вы всегда можете выделить буфер фиксированного размера в стеке, достаточно большом для всех применений? Это не риторический вопрос...
10 авг '10 в 18:59
1
ответ
Почему этот сценарий CMake находит "alloca" и все еще не работает?
Я использую alloca работать в одном из моих проектов и решил использовать CMake, чтобы убедиться, что он доступен. Поэтому я добавил этот бит в мой файл CMakeLists.txt: include(CheckSymbolExists) check_symbol_exists(alloca stdlib.h;cstdlib ALLOCA_EX…
16 июн '17 в 01:21
1
ответ
Alloca вместо локальной переменной в Alsa
Я использовал пример программы C ALSA в качестве справочной и пробежал по следующему коду: ... snd_ctl_event_t *event; snd_ctl_event_alloca(&event); ... Основываясь на исходном коде ALSA, snd_ctl_event_alloca это макрос, который вызывает __snd_a…
15 окт '18 в 23:54
0
ответов
Выражение-локальная переменная
Я попытался придумать (просто как эксперимент, ничего серьезного) с макросом, который оборачивает alloca более объектно-ориентированным способом, используя специальный "конструктор", который возвращает размер, который понадобится экземпляру, вместе …
11 янв '18 в 01:24
2
ответа
Что такое применение alloca?
Возможный дубликат: В каких случаях полезно использовать alloca()? Недавно мне довелось увидеть использование функции alloca(). Поиск в Google сказал мне, что он используется для выделения места в стеке. Я не могу получить заявку на это? Кроме того,…
21 сен '12 в 14:29
2
ответа
Это хорошая практика, чтобы скрыть определение структуры в C?
Я думаю, что скрытое определение структуры делает код более безопасным, так как вы применяете с помощью компилятора, что ни один член структуры не может быть доступен напрямую. Недостатком является то, что пользователи не могут объявлять переменные …
15 дек '15 в 22:14
6
ответов
В чем разница между alloca(n) и char x[n]?
В чем разница между void *bytes = alloca(size); а также char bytes[size]; //Or to be more precise, char x[size]; void *bytes = x; ... где размер - это переменная, значение которой неизвестно во время компиляции.
10 апр '10 в 19:02
2
ответа
Допустимо ли это использование alloca()?
После использования вектора std для хранения моего списка ходов в шахматном движке я понял, что, поскольку у шахмат есть коэффициент усреднения 35 (т.е. что-то вроде 35 легальных ходов из типичной позиции), вектор сильно менял размеры, тем самым отр…
06 июн '14 в 12:38
1
ответ
Когда _malloca не может выделить память на кучу
Когда alloca не может выделить память в куче, это создает структурированное исключение stackru и остановка программы с помощью Stackru. Хорошо. Но когда _malloca не может выделить память на кучу, это ничего не говорит. Я выделяю большое количество п…
11 июл '14 в 15:28
2
ответа
Понимание выравнивания alloca() в GCC и, казалось бы, пропущенной оптимизации
Рассмотрим следующий игрушечный пример, который выделяет память в стеке с помощью alloca() функция: #include <alloca.h> void foo() { volatile int *p = alloca(4); *p = 7; } Компиляция функции выше с помощью gcc 8.2 с -O3 приводит к следующему к…
26 сен '18 в 20:40
4
ответа
Как GCC компилировать без _alloca?
По какой-то причине я должен использовать gcc для компиляции файла C, а затем ссылаться на проект Visual C++ 2008. (Я использовал текущую последнюю версию gcc: cygwin gcc 4.3.4 20090804.) Но есть одна проблема: gcc всегда выделяет большой массив с п…
27 фев '10 в 16:59