草庐IT

new_elem

全部标签

c++ - placement new 基于模板 sizeof()

这在C++11中合法吗?使用最新的英特尔编译器编译并且似乎可以工作,但我只是觉得它是侥幸。classcbase{virtualvoidcall();};templateclassfunctor:publiccbase{public:functor(T*obj,void(T::*pfunc)()):_obj(obj),_pfunc(pfunc){}virtualvoidcall(){(_obj)(*_pfunc)();}private:T&_obj;void(T::*_pfunc)();//edited:thisisnogood://conststaticintsize=sizeof(_

c++ - 使用替换的 operator new 进行 Clang 链接时优化会导致 valgrind 中的 free()/delete 不匹配

当将clang3.5.0与-flto一起使用并与共享库链接时,似乎在共享库中调用operatordelete不遵循与调用相同的符号解析顺序来自主要对象的code>operatornew。示例:共享.cpp:voiddeleteIt(int*ptr){deleteptr;}ma​​in.cpp:#include#includevoid*operatornew(size_tsize){void*result=std::malloc(size);if(result==nullptr){throwstd::bad_alloc();}returnresult;}voidoperatordelet

c++ - 如果传递的指针为空,placement new 是否会调用构造函数?

我试图将一个vc7.1项目转换为我从codeproject获得的vs2010。(这是链接http://www.codeproject.com/KB/cpp/transactions.aspx?fid=11253&df=90&mpp=50&noise=3&sort=位置&view=展开&fr=1#xx0xx但是在转换和修改它的配置之后。我发现它调试不成功,它说在DrawIt.exe中的0x0028e7b9处出现未处理的异常:0xC0000005:访问冲突写入位置0x00000000。错误行是这样的data=new(Mm::Allocate(sizeof(DocData),sid))Doc

c++ - int * array = new int [size](); 的有效性

int*array=newint[size]();operator()允许将数组的所有值设置为0(所有位为0)。这称为值初始化。从哪个版本的g++开始有效?其他编译器呢?我在哪里可以找到它的标准? 最佳答案 这是C++标准的一部分;如果它在g++中无效,则g++不合格。从C++标准(ISO/IEC14882:2003)中,有几个部分是相关的:5.3.4/15关于新表达式说:Ifthenew-initializerisoftheform(),theitemisvalue-initialized8.5/5关于初始化程序说:Tovalue

c++ - 哪个更高效/整洁 : clearing an existing stringstream or creating a new one?

只是出于好奇而提出的简单问题。类上的多个方法需要使用字符串流,或者特别是ostringstream。1)有一个stringstream变量作为类成员,然后在使用它之前清除它,即msg.str("")2)每次需要使用时,在每个方法中本地创建一个新的stringstream变量。就效率和整洁度而言,哪种实现方式最好?我的直觉是选项1,但不确定初始构造与每次调用str()相结合是否会更糟?附言我读过Initializing..whichoneismoreefficient?和Whichisquicker/moreefficient?,我的下一步是研究分析和编写一个小的测试应用程序,但我觉得问

c++ - 表达式 `new T` 的计算结果是右值还是左值?

我目前正在阅读这篇教程/右值引用的解释:http://thbecker.net/articles/rvalue_references/section_07.html在倒数第二段中,作者提到“工厂主体中T的复制构造函数的参数是左值”。他指的代码是这样的:templateshared_ptrfactory(Argconst&arg){returnshared_ptr(newT(arg));}我意识到newT(arg)在堆上构造了一个T对象,但返回值不是一个临时指针值,如果不使用就会丢失(导致内存泄漏)我猜),因此是右值?编辑:澄清一下,我知道这个例子中不会有内存泄漏。我的意思是,如果指针值

c++ - 为什么使用 'new' 是个坏主意?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:InC++,whyshouldnewbeusedaslittleaspossible?在C++中实例化类时使用“new”真的是个坏主意吗?Foundhere.我知道使用原始指针是不明智的,但为什么要使用“new”关键字,因为这是一种糟糕的做法?或者是?

objective-c - 核心数据 : How to handle new versions?

我发布了一个带有CoreDatasqlite数据库的应用程序。在我的应用程序的新版本中,我在XCode中为我的xcdatamodel创建了一个新的“模型版本”。在新版本中,删除了一个实体,并向其中一个实体添加了一些新属性。更新到新的应用程序版本时,出现此sql错误:Themodelusedtoopenthestoreisincompatiblewiththeoneusedtocreatethestore我该如何处理这个错误?数据库中的所有数据都是从网络上下载的,所以最简单的方法可能是在发生此错误时删除当前的sqlite文件并从头开始——但是当数据库中包含无法重新生成的数据时人们会怎么做

ios - [[NSUUID new] UUIDString] 和 CFUUIDRef 之间有什么区别

任何人都可以让我知道通过下面给出的这两种实现创建唯一ID之间的区别是什么1)CFUUIDRefcfuuid=CFUUIDCreate(kCFAllocatorDefault);NSString*udidString=(NSString*)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault,cfuuid));2)NSString*guid=[[NSUUIDnew]UUIDString];哪个更可靠,因为我正在开发来自IOS8及更高版本的应用程序。 最佳答案 您可以在NSHi

android - 统一: (Using cardboard SDK) Can we download new images to set as skybox

我们正在创建一个全景纸板应用程序。我们希望管理员在服务器上挑选照片。我们如何在我们的设备上下载这些图像,然后将其设置在天空盒中?我是unity的新手,但我确实有通过WWW下载的音频剪辑,并且我确实有根据bundle资源的水龙头更改天空盒。我对图像的理解不够好,无法理解如何下载然后应用到天空盒。 最佳答案 Unity天空盒是由6个纹理(顶部、底部和4个边)组成的立方体贴图。所以你需要6个纹理,你可以通过WWW下载,你可以将每个纹理分配给立方体贴图的正确属性。http://docs.unity3d.com/Manual/class-Sk