我想创建N个vector,尝试用malloc来创建,但是无法运行,是不是不能这样做啊?
5条回答 默认 最新
- Kwan的解忧杂货铺@新空间代码工作室 2024-02-29 17:48关注
………………………………哈哈 下午好🌅🌅🌅
本答案参考通义千问不建议直接使用
malloc
为std::vector
分配内存。std::vector
是一个动态数组,内部已经包含了内存管理的功能,包括动态扩容。在C++中,
malloc
和free
通常用于处理C风格的数组或者自定义的数据结构,而不是标准库容器如std::vector
。如果你需要创建多个std::vector
,可以直接使用new
或std::vector
的构造函数。错误的做法:
int N; // 假设你已经正确获取了N的值 void* ptr = malloc(sizeof(std::vector<int>) * N); // 不推荐 std::vector<int>* vectors = static_cast<std::vector<int>*>(ptr);
正确的方法:
-
使用
std::vector
的构造函数:std::vector<int> vectors[N]; // 直接创建N个vector
-
或者,如果需要更大的灵活性,可以使用
std::vector<std::vector<int>>
:std::vector<std::vector<int>> vectors(N); // 创建一个大小为N的vector,每个元素都是一个vector
-
如果真的需要手动管理内存(不推荐):
std::vector<int>* vectors = new std::vector<int>[N]; // 使用完毕后,记得释放内存 for (int i = 0; i < N; ++i) { delete vectors[i]; } delete[] vectors;
但请尽量避免手动内存管理,除非你有特定的需求,因为这会引入更多的错误源。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 -
悬赏问题
- ¥15 非科班怎么跑代码?如何导数据和调参
- ¥15 福州市的全人群死因监测点死亡原因报表
- ¥15 Altair EDEM中生成一个颗粒,并且各个方向没有初始速度
- ¥15 系统2008r2 装机配置推荐一下
- ¥500 服务器搭建cisco AnyConnect vpn
- ¥15 悬赏Python-playwright部署在centos7上
- ¥15 psoc creator软件有没有人能远程安装啊
- ¥15 快速扫描算法求解Eikonal方程咨询
- ¥15 校内二手商品转让网站
- ¥20 高德地图聚合图层MarkerCluster聚合多个点,但是ClusterData只有其中部分数据,原因应该是有经纬度重合的地方点,现在我想让ClusterData显示所有点的信息,如何实现?