腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(9999+)
视频
沙龙
2
回答
如何将
std
::
make_shared
和new结合起来(
std
::new)
、
、
C++的new有一个返回空
指针
的选项,而不是在
分配
失败时抛出bad_alloc异常。如果您想
使用
共享
指针
而不是原始
指针
,则通常应该
使用
make_shared
,因为它对于控制块的
分配
非常聪明。auto pf =
std
::
make_shared
<Foo>(1, 2, 3);
make_shared
封装了新的,这使得它不可能(?)若要选择nothrow版本,请执行以下操作。
std</
浏览 6
提问于2014-03-19
得票数 17
回答已采纳
1
回答
无法
使用
`
std
::
make_shared
`
分配
指针
、
我很难理解
使用
std
::
make_shared
和
std
::shared_ptr创建抽象类的new对象有什么区别?因此,在我的特定情况下,我不能
使用
以下代码:但是能够做到这一点: p_network_connection_ =
std<
浏览 48
提问于2019-11-07
得票数 0
回答已采纳
6
回答
C++中
make_shared
与正常shared_ptr的差异
、
、
std
::shared_ptr<Object> p1 =
std
::
make_shared
<Object>("foo");谷歌和stackoverflow上有很多关于这方面的帖子,但我不能理解为什么
make_shared
比直接
使用
shared_ptr更有效。这样我就能理解
make_shared
是如何高
浏览 141
提问于2014-01-03
得票数 332
回答已采纳
3
回答
如何通过
std
::shared_ptr访问实例成员变量?
、
include <memory>public: Test() : x(5){}{ // the following lines both produce seg faults /
浏览 2
提问于2015-08-05
得票数 1
回答已采纳
4
回答
用于共享
指针
的new和
make_shared
、
、
、
std
::shared_ptr p1 =
std
::
make_shared
("foo");
std
::shared_ptr p2(新对象(“foo”)); 在您的代码中,第二个变量只是一个裸
指针
,而不是共享
指针
make_shared
(在实践中)更有效,因为它在一个动态
分配
中将引用控制块与实际对象一起
分配
。相反,接受裸对象
指针
的shared_ptr的构造函数必须为引用计数
分配
另一个
浏览 7
提问于2014-11-22
得票数 6
回答已采纳
1
回答
使用
纯虚拟基类的shared_ptr代码有什么问题?
、
#include <memory>using namespace
std
; public: ~A() { }class AImpl : public A { const void test() const { }
浏览 0
提问于2016-09-23
得票数 1
回答已采纳
3
回答
有什么理由在构造对象时不
使用
std
::
make_shared
吗?
我想不出任何情况会更倾向于 auto obj =
std
::
make_shared
<Object>有没有什么情况下,你更喜欢(或被迫)
使用
第一种形式,除了与返回原始
指针
的代码接口?
浏览 0
提问于2012-01-13
得票数 17
回答已采纳
3
回答
使用
std
::
make_shared
()的数据缓存含义
、
、
、
、
我读到说:
make_shared
(在实践中)更有效,因为它在一个动态
分配
中将引用控制块与实际对象一起
分配
。相反,接受裸对象
指针
的shared_ptr构造函数必须为引用计数
分配
另一个动态变量。这是否意味着
使用
std
::shared_ptr创建的
std
::
make_shared
向量将是“缓存友好的”,因为数据(控制块和真正
指针
的数据)在一个块中?我的用例是一个由10万个共享
指针
组成的向量,其中指向
浏览 3
提问于2012-10-11
得票数 2
回答已采纳
2
回答
Std
::shared_ptr<type>(新DerivedType(.)) !=
std
::
make_shared
<type>(DerivedType(.))?
、
、
、
、
我一直试图
使用
std
::shared_ptr来极大地简化内存管理,但是我遇到了一定是某种错误。当我用DerivedType创建一个
std
::
make_shared
<type>(DerivedType(...))
指针
时,它只能被称为Type而不是DerivedType。然而,当我
使用
语法
std
::shared_ptr<Type>(new DerivedType)时,vfptr表列出了正确的条目,并且可以在没有问题的情况下将其转换为DerivedTy
浏览 1
提问于2015-02-13
得票数 0
回答已采纳
2
回答
std
::shared_ptr<
std
::vector<double>>出了什么问题?
、
、
我的印象是当
std
::shared_ptr超出作用域时,它不会释放内存。下面是我的测试代码。你能告诉我我哪里做错了吗?我
使用
gtest进行测试。当我执行这个测试时,我可以看到内存不断地被消耗。我
使用
的是微软VC++ 2013。void ProceedVector() { for (int ind= 10000; ind++) { nu
浏览 2
提问于2017-05-22
得票数 0
4
回答
通过共享
指针
将c++赋值给结构成员会导致SIGSEGV
、
、
我正在更新我的C++知识后,没有
使用
它从90年代后期,并提高了速度的新事物。今天,我的问题是关于共享
指针
和结构。}; shared_ptr<struct A> y;}g++ -Wall -Wpedantic --
std
我的理解--显然是错误的-- shared_ptr成语会处理它所指向的东西的内存
分配
和去
分配
,事实上,当我用它来指向我所能知道的原始类型和类时,这种情况就会发生,但是这个用它来
浏览 2
提问于2015-01-09
得票数 2
回答已采纳
5
回答
如何将删除器传递给
make_shared
?
、
、
、
、
自从C++11以来,由于几个原因,开发人员倾向于为动态生命周期对象
使用
智能
指针
类。对于那些新的智能
指针
类,标准,甚至建议不要
使用
像new这样的运算符,而是建议
使用
make_shared
或make_unique来避免一些容易出错的情况。如果我们喜欢
使用
一个智能
指针
类,比如shared_ptr,我们可以构造一个类似,另外,我们希望将一个自定义删除器传递给智能
指针
浏览 1
提问于2015-12-12
得票数 47
回答已采纳
1
回答
基于多个引用的C++共享ptr发布
、
、
}void doCall() { case 4: theBase =
std
::
make_shared
<D>( D(0) ); } 通过这种方式,我可以正确地
使用
智能
指针
,也可以
使用
继承来根据it的值获
浏览 1
提问于2017-12-05
得票数 0
回答已采纳
1
回答
创建shared_ptr到ints的向量
、
、
、
基思:^)#include <vector>
std
::vector<
std
::shared_ptr<int> > w; w.push_back(new int(7));
std
::c
浏览 0
提问于2017-01-10
得票数 5
回答已采纳
1
回答
难道没有办法让shared_ptr被默默地创建吗?
、
、
考虑以下代码:class B : public A {}; {} {} 语法
std
::shared_ptr<我在想这样的事情:func(
std
::
make_shared
(
浏览 0
提问于2020-12-16
得票数 1
回答已采纳
1
回答
为什么
std
::
make_shared
不能用删除的操作符新建类型进行编译?
、
我正在尝试编写堆禁止类型,即在堆
分配
的内存上不可构造的类型。通过删除操作符new和placement,我认为我会做到这一点。但是
使用
std
::
make_shared
创建共享
指针
仍然会编译。为什么删除新运算符时
std
::
make_shared
<A>()不编译?[] (size_t) = delete;A* a1 = new A(); // Placement new
浏览 3
提问于2020-01-17
得票数 3
回答已采纳
1
回答
C++,Shared_ptr,请告诉我为什么我的代码会出错?
、
、
Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\include\memory(1143,17): message : could be '
std
::shared_ptr<int> &
std
::shared_ptr<int>::operator =(
std
::shared_ptr<int> &&) noexcept' 1>C:\Program FilesVisual Studio\2019\Com
浏览 17
提问于2020-04-10
得票数 1
回答已采纳
6
回答
什么时候要从原始
指针
构造共享
指针
?
、
、
多亏了
std
::
make_shared
,我想知道,作为原始
指针
的
std
::shared_ptr的构造函数是否有任何值,除了与遗留/库代码进行接口时(例如在存储工厂的输出时)。即使是将代码检查放到适当的位置,以警告程序员何时
使用
它,也是如此吗? 同样的准则(不管是什么)是否适用于shared_ptr<T>::reset(T*)?关于代码检查:我知道与遗留/库代码的接口很常见,所以自动化的代码检查可能会有问题,但在大多数情况下,到目前为止,我还是宁愿
使用
u
浏览 6
提问于2015-07-24
得票数 17
回答已采纳
3
回答
如何利用
std
::
make_shared
避免大内存
分配
、
、
(,我
无法
绕过)://...some stuff on a最重要的是,A类的实例相当大,每个实例的大小为1GB。我知道我可以打电话但这会为A的副本
分配
内存,我真的很想避免这样做。问题 有没有一种方法可以将对
std
::
make_shared
的调用(可能带有move语义)黑客化,这样我就不会被迫为A类的另一个实例
分配
浏览 0
提问于2014-07-14
得票数 13
回答已采纳
2
回答
取消引用共享
指针
并将其赋值给它
、
、
是否可以取消引用共享
指针
,为其
分配
和
分配
一个新对象,如下所示:{
std
::
make_shared
<
std
::string>(); bar(*x); // is this fine?
浏览 1
提问于2018-06-29
得票数 7
回答已采纳
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
智能指针:让C+程序更加安全和高效的神器
这几个C+的坑,一旦踩中了,加班是肯定避免不了了!
实现线程安全队列——细粒度锁实现
全面理解C+指针和内存管理(一)
一天一个离职技巧之代码优化
热门
标签
更多标签
云服务器
ICP备案
对象存储
腾讯会议
实时音视频
活动推荐
运营活动
广告
关闭
领券