草庐IT

example-new

全部标签

c++ - 有一个单独的 "operator new[]"的目的是什么?

看起来operatornew和operatornew[]具有完全相同的签名:void*operatornew(size_tsize);void*operatornew[](size_tsize);并做同样的事情:要么返回一个指向足够大的原始(未以任何方式初始化)内存块的指针,要么抛出异常。当我使用new和operatornew[]创建对象时,operatornew也会在内部调用-当我创建对象数组时使用new[]。上述两个特殊函数在C++内部以完全相同的方式调用,我看不出这两个调用有什么不同的含义。让两个不同的函数具有完全相同的签名和完全相同的行为的目的是什么?

c++ - 通过placement-new手动构造一个平凡的基类

小心,我们正在绕过巨龙的巢穴。考虑以下两个类:structBase{std::stringconst*str;};structFoo:Base{Foo(){std::cout如您所见,我正在访问一个未初始化的指针。还是我?假设我只使用trivial的Base类,只不过是(可能嵌套的)指针包。static_assert(std::is_trivial{},"!");我想分三步构造Foo:为Foo分配原始存储通过placement-new初始化一个适当放置的Base子对象通过placement-new构造Foo。我的实现如下:std::unique_ptrmakeFooWithBase(s

c++ - 通过placement-new手动构造一个平凡的基类

小心,我们正在绕过巨龙的巢穴。考虑以下两个类:structBase{std::stringconst*str;};structFoo:Base{Foo(){std::cout如您所见,我正在访问一个未初始化的指针。还是我?假设我只使用trivial的Base类,只不过是(可能嵌套的)指针包。static_assert(std::is_trivial{},"!");我想分三步构造Foo:为Foo分配原始存储通过placement-new初始化一个适当放置的Base子对象通过placement-new构造Foo。我的实现如下:std::unique_ptrmakeFooWithBase(s

c++ - Placement new 的返回值与其操作数的强制转换值之间是否存在(语义)差异?

placementnew的返回值与其操作数的强制转换值之间是否存在(语义)差异?structFoo{...};charbuffer[...];Foo*a=new(buffer)Foo;Foo*b=reinterpret_cast(buffer);a和b有什么不同吗?编辑:根据DaBler的评论,如果使用const/reference成员,这个问题表明存在差异:Placementnewandassignmentofclasswithconstmember所以,我的一点更新问题:a和b是否有任何不同,如果Foo没有const或引用成员? 最佳答案

c++ - Placement new 的返回值与其操作数的强制转换值之间是否存在(语义)差异?

placementnew的返回值与其操作数的强制转换值之间是否存在(语义)差异?structFoo{...};charbuffer[...];Foo*a=new(buffer)Foo;Foo*b=reinterpret_cast(buffer);a和b有什么不同吗?编辑:根据DaBler的评论,如果使用const/reference成员,这个问题表明存在差异:Placementnewandassignmentofclasswithconstmember所以,我的一点更新问题:a和b是否有任何不同,如果Foo没有const或引用成员? 最佳答案

Module not found: Error: Can‘t resolve ‘antd/dist/antd.css‘ in ‘E:\new\react\geek-pc\src‘

Modulenotfound:Error:Can’tresolve‘antd/dist/antd.css’in‘E:\new\react\geek-pc\src’。Hi,我是赵猛,今天是做react项目的第二天,记录一下学习过程中出现的一些问题。一、报错今天使用yarnaddantd命令安装好AntDesign组件库,导入antd全局样式的时候出现了这样的一个错误:通过观察引入的路径,去node_modules文件中去查找,发现antd/dist中并没有css的文件,只有js相关的文件二、解决方法需要先卸载之前的antdyarnremoveantd尝试降低版本,yarn指定版本号yarnadd

c++ - 如何结合 std::make_shared 和 new(std::nothrow)

C++的new有一个选项可以在分配失败时返回空指针而不是抛出bad_alloc异常。Foo*pf=new(std::nothrow)Foo(1,2,3);(是的,我知道这只会阻止new抛出bad_alloc;它不会阻止Foo的构造函数抛出异常。)如果您想使用共享指针而不是原始指针,您通常应该使用make_shared,因为它可以巧妙地分配控制block。autopf=std::make_shared(1,2,3);make_shared封装了新版本,这使得(?)无法选择nothrow版本。因此,您似乎必须放弃make_shared并明确调用new。std::shared_ptrpf(n

c++ - 如何结合 std::make_shared 和 new(std::nothrow)

C++的new有一个选项可以在分配失败时返回空指针而不是抛出bad_alloc异常。Foo*pf=new(std::nothrow)Foo(1,2,3);(是的,我知道这只会阻止new抛出bad_alloc;它不会阻止Foo的构造函数抛出异常。)如果您想使用共享指针而不是原始指针,您通常应该使用make_shared,因为它可以巧妙地分配控制block。autopf=std::make_shared(1,2,3);make_shared封装了新版本,这使得(?)无法选择nothrow版本。因此,您似乎必须放弃make_shared并明确调用new。std::shared_ptrpf(n

c++ - 元编程 : Declare a new struct on the fly

是否可以即时声明新类型(空结构体或没有实现的结构体)?例如constexprautomake_new_type()->???;usingA=decltype(make_new_type());usingB=decltype(make_new_type());usingC=decltype(make_new_type());static_assert(!std::is_same::value,"");static_assert(!std::is_same::value,"");static_assert(!std::is_same::value,"");“手动”解决方案是template

c++ - 元编程 : Declare a new struct on the fly

是否可以即时声明新类型(空结构体或没有实现的结构体)?例如constexprautomake_new_type()->???;usingA=decltype(make_new_type());usingB=decltype(make_new_type());usingC=decltype(make_new_type());static_assert(!std::is_same::value,"");static_assert(!std::is_same::value,"");static_assert(!std::is_same::value,"");“手动”解决方案是template