Вопросы по теме 'variable-length-array'
Есть ли какие-либо накладные расходы на использование массивов переменной длины?
Есть ли какие-то накладные расходы при использовании массивов переменной длины? Можно ли передать размер массива через аргумент командной строки во время выполнения? Зачем это введено, по сравнению с автоматическим и динамическим размещением массива?
16447 просмотров
schedule
17.10.2022
Динамически выделяемая память стека с областью действия класса
Некоторые компиляторы поддерживают расширения C++, позволяющие динамически выделять память в стеке. Например, g++ поддерживает alloca() , а также VLA. Все эти расширения поставляются с оговоркой, что динамически выделяемая память «освобождается»...
254 просмотров
schedule
20.12.2022
Постоянная структура с гибкими элементами массива
Обратите внимание на следующие две структуры:
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 просмотров
schedule
13.10.2023
Целый размер = 10; получить постоянное выражение?
Следующий код компилируется в gcc 4.8 и Clang 3.2:
int main()
{
int size = 10;
int arr[size];
}
8.3.4/1 стандарта С++ говорит, что размер массива должен быть интегральным константным выражением, которое size не похоже. Это ошибка обоих...
1416 просмотров
schedule
05.09.2023
Как компилятор разрешает адрес переменной, объявленной после массива переменной длины?
Предположим, у меня есть следующая функция, использующая массив переменной длины:
void func(int size)
{
int var1;
int arr[size];
int var2;
...
}
Как компилятор определяет адрес var2 ?
Единственный способ, который я могу...
197 просмотров
schedule
29.05.2024
динамическое и статическое выделение памяти?
int x;
cin>>x;
int arr[x];
Код не должен компилироваться, потому что программа попытается выделить неизвестную память для массива в стеке, НО ОН КОМпилируется! я знаю, что такое динамическая память, я много читал об этом, но я...
147 просмотров
schedule
27.10.2022
Массивы размера во время выполнения и распад указателя
Я тестировал некоторые инструменты в заголовке 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 просмотров
schedule
04.01.2023
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 просмотров
schedule
20.10.2022
Как исправить эту функцию, чтобы она возвращала конкатенацию двух строк?
Я пытаюсь написать пользовательскую функцию на 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 просмотров
schedule
21.08.2022
Показать ссылку на основе условия в angularJS
Я создаю панель навигации в AngularJS. Я показываю и скрываю подменю «div.farm-links» при наведении курсора мыши и выходе из мыши соответственно на «div.menu-links».
Теперь в моем подменю всякий раз, когда «child. ThirdLevelChildList.length»...
1241 просмотров
schedule
24.03.2023
C99 Как привести простой указатель к многомерному массиву переменной длины?
В моих телах функций reduce() и initialize(...) я хочу работать с массивом globalArray как с трехмерным, размеры которого неизвестны до времени выполнения.
Как преобразовать указатель globalArray в массив переменной длины (указатель) и...
219 просмотров
schedule
20.07.2023
Определение структуры C, содержащее тип двумерного массива
Я хочу включить указатель двумерного массива переменной длины как часть структуры, но компилятор c99 выдает следующую ошибку в строке Array anArray : "член гибкого массива в пустой структуре".
typedef const int Array[][2];
typedef struct {...
544 просмотров
schedule
19.05.2023