Простое распределение памяти массива с динамическим распределением размера и заданным размером

0

Я пишу программу и вдруг сомневался. Есть два способа назначить статический массив.

int main ()
{ 
   int a[10];
}
int main()
{
    int N;
    cin >> N;  //assume i input N as 10
    int a[N];
}

Как распределение памяти в обоих случаях отличается? Будет ли назначено во время выполнения во втором случае?

  • 0
    Вторая версия не допускается в стандарте C ++.
  • 0
    Или стандартный C, в этом отношении
Показать ещё 2 комментария
Теги:
arrays
memory-management
dynamic-arrays

2 ответа

2

Второй способ запрещен. Первый способ будет создавать память в стеке. Как только main() выйдет, он будет отменен. Если вы хотите, чтобы динамическое распределение наилучшим образом было использовать новый:

int* = new int[N];

Но тогда вам придется удалить его, в конце концов. Если вы в порядке с использованием STL, просто перейдите к std :: vector:

std::vector<int> a;
0

Второй компилируется. Но это неправильно. Стандарт C/C++ не позволяет этого.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню