创建动态 C++ 数组时出错
error creating a dynamic c++ array
我试图以这种形式制作一个动态数组:
int x;
cin>>x;
int ar[x];
我在 Linux 上的 g++ (gcc) 编译器拒绝创建没有固定大小的数组。但是在 dev-cpp 上的 windows 上使用相同的代码,它被编译并执行,它还允许我创建和使用动态数组,我认为这是一个编译器错误,但是当我重新启动并返回到 g++ 时,它编译并执行了代码,尽管它在我尝试在 windows 上代码之前拒绝这样做, 这怎么可能,危险吗?
C++
要求在编译时知道自动存储数组的大小,否则必须动态分配数组(除非使用编译器扩展)。
你应该使用
int *ar = new int[x];
...
delete []ar; // free the memory after use
或
vector<int> ar;
正如其他回答者指出的那样,如果您在编译时不知道数组的大小,那么您应该使用 new 动态分配。 但是(有些可耻地)他们没有告诉您您将负责通过删除来释放此内存:详细信息在这里
此责任(确保始终释放已分配的内存)是C++中问题的最大来源。 像 RAII 这样的技术可以使这更容易(简单地说:将内存包装在一个对象中,在构造函数中新建并在析构函数中删除,然后语言确保始终调用析构函数)
相关文章:
- 使用 thread 类在 C++ 中构造线程的动态数组时出错
- 将链表转换为指针数组时出错
- 为 NewObjectA() 函数创建 jvalues 的参数数组时出错 - JNI Invocation API
- 基于数组的列表 - 动态数组创建时出错
- 从斐波那契序列 c++ 中的数组中查找正确的元素时出错
- 分段 使用 MPI_Gather 收集字符数组时出错
- 读取字符串字符时出错 - 对于数组中的字符串值
- 声明数组>> int arr[] 时出错;在C++(虽然在 Java 中有效)?
- 在 c++ 中返回一维数组时出错
- 将 2D 数组传递给 C++ 中的函数时出错
- 在 c++ 上创建动态数组时出错
- 尝试返回指向 Visual Studio 中的动态数组的指针时出错C++
- 将 find_if() 与数组一起使用的代码段中出错
- 在比较特定输入中的程序的数组中出错
- 分段 填充数组时出错
- 数组作为函数参数查找数组长度时出错
- 读取结构数组时出错
- 将数组指针传递到函数时出错
- C++将指针数组传递给函数指针数组时出错
- 在数组中插入数据时出错 - 数组下标'int[int]'的类型无效