我知道如何在 C 中为数组动态分配空间。可以按如下方式完成:
L = (int*)malloc(mid*sizeof(int));
并且可以通过以下方式释放内存:
free(L);
如何在 C++ 中实现等价物?
具体来说,如何使用 new
和 delete[]
关键字?尤其是在创建/销毁链表节点,或创建和销毁其大小由编译时变量给出的数组的上下文中?
原文由 thematroids 发布,翻译遵循 CC BY-SA 4.0 许可协议
我知道如何在 C 中为数组动态分配空间。可以按如下方式完成:
L = (int*)malloc(mid*sizeof(int));
并且可以通过以下方式释放内存:
free(L);
如何在 C++ 中实现等价物?
具体来说,如何使用 new
和 delete[]
关键字?尤其是在创建/销毁链表节点,或创建和销毁其大小由编译时变量给出的数组的上下文中?
原文由 thematroids 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
以下信息将很有用:来源: https ://www.learncpp.com/cpp-tutorial/6-9a-dynamically-allocating-arrays/
初始化动态分配的数组
如果要将动态分配的数组初始化为 0,语法非常简单:
在 C++11 之前,没有简单的方法将动态数组初始化为非零值(初始化列表仅适用于固定数组)。这意味着您必须遍历数组并显式分配元素值。
超级烦!
但是,从 C++11 开始,现在可以使用初始化列表来初始化动态数组!
请注意,此语法在数组长度和初始化列表之间没有 operator=。
为了一致性,在 C++11 中,固定数组也可以使用统一初始化进行初始化:
需要注意的是,在 C++11 中,您不能从 C 样式的字符串初始化动态分配的 char 数组:
如果您需要这样做,请改为动态分配 std::string (或分配您的 char 数组,然后将字符串 strcpy 插入)。
另请注意,必须使用显式长度声明动态数组: