c++ - 为什么字符串向量的 unique_ptr 的 push_back 失败?
问题描述
下面的代码存在分段错误。当不涉及 unique_ptr 时,一切正常。
#include <iostream>
int main() {
auto vect = std::unique_ptr<std::vector<std::string>>();
vect->push_back("abc"); // Segmentation Fault.
vect->emplace_back("abc"); // Segmentation Fault.
return 0;
}
在这种情况下,我在 Ubunutu 上使用 g++ 10.2 进行编译。
解决方案
您需要unique_ptr
按如下方式初始化您的实例:
using type = std::vector<std::string>;
auto vect = std::make_unique<type>();
vect->push_back("abc"); // No segfaults now
vect->emplace_back("abc"); // No segfaults now either
std::cout << vect->at(0) << std::endl;
推荐阅读
- java - 点击时有没有办法将recycledView项目移到底部?
- java - 如何为此编写一个名为 product 的实例方法?(评论有说明)
- javascript - 带有文本的 HTML Canvas 图像因操作系统而异
- c++ - 为什么要在未来的方向上找到从工作日 y 到工作日 x 的一天距离必须如此复杂?
- .net - 基类库中的 FlagsAttribute 枚举示例?
- javascript - Kotlin 在使用 kotlin("js") 插件时如何使用 Thread 类?
- amazon-web-services - AWS Lambda 超时与 boto3.resource('s3')
- python - Django 中的会话处理
- css - CSS从字体大小增加填充不是线性的
- python - 单击按钮时启动 QT 线程