Вопросы по теме 'variable-length-array'

Есть ли какие-либо накладные расходы на использование массивов переменной длины?
Есть ли какие-то накладные расходы при использовании массивов переменной длины? Можно ли передать размер массива через аргумент командной строки во время выполнения? Зачем это введено, по сравнению с автоматическим и динамическим размещением массива?
16447 просмотров
schedule 17.10.2022

Динамически выделяемая память стека с областью действия класса
Некоторые компиляторы поддерживают расширения C++, позволяющие динамически выделять память в стеке. Например, g++ поддерживает alloca() , а также VLA. Все эти расширения поставляются с оговоркой, что динамически выделяемая память «освобождается»...
254 просмотров

Постоянная структура с гибкими элементами массива
Обратите внимание на следующие две структуры: typedef struct { int num_data; char * name_data; int data[]; } part_t; typedef struct { int num_parts; char * name_parts; part_t parts[]; } container_t; В идеале я...
1230 просмотров
schedule 21.11.2022

распределенный массив VS. массив переменной длины
Существует два способа выделения памяти массиву, размер которого изначально неизвестен. Самый распространенный способ - использовать malloc вот так int * array; ... // when we know the size array = malloc(size*sizeof(int)); Но в C99 также...
20167 просмотров
schedule 27.03.2023

Инициализация массива переменной длины
При инициализации компилятора массива переменной длины выдается сообщение об ошибке: [Error] variable-sized object may not be initialized Фрагмент кода: int n; printf("Enter size of magic square: "); scanf("%d",&n); int...
55126 просмотров

Целый размер = 10; получить постоянное выражение?
Следующий код компилируется в gcc 4.8 и Clang 3.2: int main() { int size = 10; int arr[size]; } 8.3.4/1 стандарта С++ говорит, что размер массива должен быть интегральным константным выражением, которое size не похоже. Это ошибка обоих...
1416 просмотров

Как компилятор разрешает адрес переменной, объявленной после массива переменной длины?
Предположим, у меня есть следующая функция, использующая массив переменной длины: void func(int size) { int var1; int arr[size]; int var2; ... } Как компилятор определяет адрес var2 ? Единственный способ, который я могу...
197 просмотров

динамическое и статическое выделение памяти?
int x; cin>>x; int arr[x]; Код не должен компилироваться, потому что программа попытается выделить неизвестную память для массива в стеке, НО ОН КОМпилируется! я знаю, что такое динамическая память, я много читал об этом, но я...
147 просмотров

Массивы размера во время выполнения и распад указателя
Я тестировал некоторые инструменты в заголовке type_traits на новых массивах размера среды выполнения С++ 14, рассмотрим код ниже: int g[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; template <typename T> void print(T &t) { std::cout...
352 просмотров
schedule 09.07.2022

В чем разница между VLA и динамическим выделением памяти через malloc?
Мне было любопытно вот это: В чем разница между: const int MAX_BUF = 1000; char* Buffer = malloc(MAX_BUF); и: char Buffer[MAX_BUF];
5271 просмотров

Segfault при назначении указателя токена (из strtok) элементу указателя 2d VLA структур
Я пытаюсь разобрать файл csv и сохранить эти значения в 2d VLA. Первый кодовый блок показывает два вызова функции TokenizeLine, которая очень просто использует strtok, чтобы разбить строку на части и присвоить токен соответствующей ячейке в массиве....
82 просмотров
schedule 12.07.2022

Могу ли я использовать массив C переменной длины в С++ 03 и С++ 11?
В C есть действительно классная функция, называемая массивами переменной длины. Он доступен в C90 и выше и позволяет откладывать размер массива до времени выполнения. См. руководство GCC 6.19 Массивы переменной длины . Я работаю на С++. В...
687 просмотров
schedule 14.08.2023

Как определить размер массива на основе количества входов?
Насколько мне известно (я новичок в c), вы можете определить размер массива, если пользователь знает, сколько входных данных пользователь собирается предоставить. Но как я могу определить размер массива на основе количества входных данных?...
2240 просмотров
schedule 25.06.2023

Замена C ++ для C99 VLA (цель: сохранить производительность)
Я портирую код C99, который интенсивно использует массивы переменной длины (VLA), на C ++. Я заменил VLA (распределение стека) классом массива, который выделяет память в куче. Падение производительности было огромным, замедление в 3,2 раза (см....
2445 просмотров

Как исправить эту функцию, чтобы она возвращала конкатенацию двух строк?
Я пытаюсь написать пользовательскую функцию на C, которая будет объединять две строки. До сих пор я придумал: char *strcat406(char *str1, char *str2) { int str1length = 0; int str2length = 0; char newStr[str1length + str2length];...
81 просмотров
schedule 25.04.2023

Как C99 справляется с невозможностью создания массива переменной длины во время выполнения?
Программирую встроенные системы. Одно золотое правило заключается в том, что мы никогда не вызываем malloc() ; все данные должны быть статически размещены во время компиляции. Следовательно, я не совсем знаком с массивами переменной длины ,...
360 просмотров
schedule 17.10.2022

Почему я могу перейти в область действия переменной alloca:d, но не массива переменной длины?
См. эту тестовую программу: #include <stdio.h> #include <string.h> int main(int argc, char *argv[]) { if (argc < 2) goto end; char s[strlen(argv[1]) + 1]; strcpy(s, argv[1]); printf("s=%s\n", s); end: return 0; }...
147 просмотров

Показать ссылку на основе условия в angularJS
Я создаю панель навигации в AngularJS. Я показываю и скрываю подменю «div.farm-links» при наведении курсора мыши и выходе из мыши соответственно на «div.menu-links». Теперь в моем подменю всякий раз, когда «child. ThirdLevelChildList.length»...
1241 просмотров

C99 Как привести простой указатель к многомерному массиву переменной длины?
В моих телах функций reduce() и initialize(...) я хочу работать с массивом globalArray как с трехмерным, размеры которого неизвестны до времени выполнения. Как преобразовать указатель globalArray в массив переменной длины (указатель) и...
219 просмотров

Определение структуры C, содержащее тип двумерного массива
Я хочу включить указатель двумерного массива переменной длины как часть структуры, но компилятор c99 выдает следующую ошибку в строке Array anArray : "член гибкого массива в пустой структуре". typedef const int Array[][2]; typedef struct {...
544 просмотров