草庐IT

auto-delete

全部标签

c++ - 我是否负责在 QImage::bits() 函数提供的指针上调用 delete?

Qt类QImage有两个版本的bits()函数,返回指向底层图像数据的指针。一个是const,另一个不是。这是thedocumentation对于非常量版本:Returnsapointertothefirstpixeldata.ThisisequivalenttoscanLine(0).NotethatQImageusesimplicitdatasharing.Thisfunctionperformsadeepcopyofthesharedpixeldata,thusensuringthatthisQImageistheonlyoneusingthecurrentreturnvalue

c++ - 为什么auto y = reference_to_x的地址和x的地址不一样?

假设您有以下代码:long&fn2(long&another_var1,longanother_var2){another_var1=another_var1+another_var2;another_var2=another_var2+another_var1;returnanother_var1;}intmain(){cout在您到达第2行之前,一切都按预期进行,其中返回false。当你autoresult时,它应该是一个引用变量到another_var1,它是对var1的引用,即它们都应该有相同的地址——它们只是同一内存的别名。查看第1行,返回15,给人一种它们都一样的错觉。然后

web前端之使用弹性和外边距进行网页布局、非常有用的小技巧、flex、margin、auto

MENU效果图htmlcss解析效果图图中效果只需要flex和margin便可以实现。htmldivclass="w_100_d_fh_168p_6bc_c0c0c0">divclass="w_50h_50bc_e75f57m_a">div>div>divclass="w_100_d_fp_6mt_20bc_c0c0c0">divclass="w_50h_50bc_e75f57">div>divclass="w_50h_50bc_f2b64c">div>divclass="w_50h_50bc_55bd4cml_a">div>div>divclass="w_100_d_fp_6mt_20bc_

c++ - 通过引用与通过值传递指向函数的指针,以及在指针链上使用 delete

假设我这样做:voidfunc(int*&refptr){*refptr=7;}int*ptr=newint;func(ptr);现在,如果我不使用引用运算符,在func中不会完成完全相同的事情吗?无论哪种方式,您都在堆中访问相同的int值,那么一种方式比另一种方式更可取吗?是否应该仅在您尝试更改指针...指向的位置时才使用引用运算符?我不清楚这一点,我的教授也没有帮助。:(我的另一个问题与删除运算符有关。假设我有:int**ptr=newint*;ptr*=newint;如果我想释放堆中分配的所有内存,我可以只对ptr使用delete一次,还是必须先删除ptr*然后再删除ptr?非常

c++ - dll 的 new 和 delete 运算符重载

如何为dll重载new和delete运算符。我已经将重载运算符作为dll的一部分编写,但是与此dll链接的客户端不使用overloadednewanddelete 最佳答案 这是C++标准在第17.6.4.6/3节中对此的说明:Theprogram'sdefinitions(ofthenew/deleteoperators)areusedinsteadofthedefaultversionssuppliedbytheimplementation.Suchreplacementoccurspriortoprogramstartup.T

c++ - std::runtime_error 子类的 "call to deleted constructor of"编译器错误

我从std::runtime_error派生了一个异常类,以便添加对异常流的支持。我收到一个奇怪的编译器错误输出,我不确定如何解决?clang++-std=c++11-stdlib=libc++-g-Wall-I../-I/usr/local/includeMain.cpp-cMain.cpp:43:19:error:calltodeletedconstructorof'EarthException'throwEarthException(__FILE__,__LINE__)^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~../EarthExce

c++ - 函数中auto_ptr的返回值

我遇到过这样的代码。MyClassMyClass::get_information(constsome_datastructure*record){auto_ptrvariable(newMyClass());variable->set_article_id(record->article_id);return*variable.get();}我知道这会返回一个(拷贝?)MyClass类型的对象。最初,我认为它正在返回对我来说没有意义的auto_ptr对象(?)因为我认为auto_ptr对象在超出范围时会被销毁。无论如何,上面的代码可以吗?对象*variable.get()在函数返回时

c++ - c++ 中的 malloc/free 和 new/delete 兼容性?

malloc/free和new/delete有一个很好的比较here,以及malloc()和free()如何工作的很好的解释here.显然,我们不会混合使用它们-将free与new一起使用或将delete与malloc一起使用。我们可以看到很多开源项目,有很多贡献者,使用这两种机制,同时遵守上述“禁止混合”规则。通常,您在一个文件中只有一种方式(一位作者,一种偏好)。我已经fork了这样一个项目,我正在使用new/delete添加一些功能。但是我遇到了一些奇怪的内存损坏。当然,我可能对他们负责,但是.....这让我问了一些“幼稚”的问题:我可以在同一个编译单元(*.o)中同时使用mal

c++ - 成员函数中的 decltype(auto) 忽略无效主体,decltype(expr) 失败

我有一个简单的模板化包装器结构,其成员函数在其模板类型的对象上调用.error()。templatestructWrapper{Tt;decltype(auto)f(){returnt.error();//calls.error()}};如果我用一个没有error()成员函数的类型实例化它,只要我不调用它就没问题。这就是我想要的行为。Wrapperw;//noproblemhere//w.error();//uncommentedcausescompilationfailure如果我使用我认为是具有尾随返回类型的语义等价物,它会在变量声明上出错templatestructWrapper

c++ - 为什么 `auto&` 不能绑定(bind)到 volatile 右值表达式?

考虑下面的代码:intmain(){inti{};auto&c=static_cast(i);//(1)auto&v=static_cast(i);//(2)}(1)编译成功,(2)不被接受:error:volatilelvaluereferencetotype'volatileint'cannotbindtoatemporaryoftype'volatileint'为什么auto不能变成volatileint?为什么auto&可以变成constint并绑定(bind)到constint&&?是因为auto&实际上绑定(bind)到一个在赋值右侧创建的临时对象吗?但是,为什么auto&