我不能真正理解动态分配和静态分配之间的区别,他们说动态分配在执行程序时发生,而静态分配仅在编译时发生,而我们在执行时不能手动分配,但是
#include <iostream>
using namespace std;
int main()
{
int size , a = 0;
cout << "Enter the size of Array: ";
cin >> size;
int A[size][size];
for(int i = 0 ; i < size ; i++)
{
for(int j = 0 ; j < size ; j++)
cout << a++ << '\t';
cout << endl;
}
system("pause");
return 0;
}
该程序将在执行时分配数组大小。
答案 0 :(得分:3)
动态分配的真正目的是控制分配对象的生命周期。动态分配的对象一直存在,直到您取消分配它们为止。它实际上与数组没有任何关系,尽管通常是初学者首先要学习分配的情况。
考虑这两个功能
int* bad()
{
int x = 123;
return &x;
}
int* good()
{
int* x = new int(123);
return x;
}
两个函数都创建一个int并返回一个指向该int的指针。
bad
函数不正确,因为x变量在函数退出时被破坏,因此它返回指向已被破坏的对象的指针。
good
函数动态创建一个int,该对象永远不会被破坏(除非程序将其删除)。所以这个功能是正确的。
偶然地,int size; ... int A[size][size];
不是合法的C ++。一些编译器允许这样做,而其他编译器则不允许。