草庐IT

link-delete

全部标签

c++ - 如果重载了一个new但是没有加载对应的delete会怎样?

任何人都可以解释如果在C++中重载了new但未加载相应的delete会发生什么情况? 最佳答案 这只是对象构造抛出异常时的问题,在C++115.3.4/18中有描述:Ifnounambiguousmatchingdeallocationfunctioncanbefound,propagatingtheexceptiondoesnotcausetheobject’smemorytobefreed.[Note:Thisisappropriatewhenthecalledallocationfunctiondoesnotallocatem

c++ - Netbeans/C++ : Link 2 projects together (Executable/Dynamic Library)

我目前正在创建2个项目。第一个是可执行应用程序。第二个是动态库。有没有办法将动态库链接到Netbeans中的应用程序,这样当我运行应用程序时,我可以加载到动态库中。我知道我可以只复制构建的文件,但这很麻烦,因为我需要测试它是否每分钟都在工作。有人知道怎么做吗?我很确定这是可能的,因为它在很多情况下都非常有用。 最佳答案 是的,这是可能的:应用程序项目->右键单击​​->属性->链接器Libraries->...->AddProject->选择你的库项目(->检查Build并在必要时选择Configuration)在C或C++编译器设

c++ - 如何将具有 "deleted"复制构造函数和赋值运算符的类放入映射中?

因为我使用的是一个不完全是C++11的编译器(VS11),所以我收到一个关于防止使用复制构造函数和赋值运算符的链接器错误。一切都很好,但问题是我不能将我的类放在std::map中,其中键是uin32_t,值是我的类。我什至尝试了emplace,但它不起作用。我正在考虑std::move将unique_ptr放入map中,但不想重新设计容器。那么有没有什么优雅的方法可以做到这一点(优雅==不像在map中放置一个虚拟对象然后在值内存中放置新的:)?代码位是这样的:std::mapm_map;//declarednotdefinedpublic:LogFileWriter(constLogF

c++ - 在 C++ 中用 new/delete 替换 malloc/free

我只是想确定一下。这是我的代码int*Image=(int*)malloc(sizeof(int)*m_Width/2*m_Height);free(Image);如果我想使用new而不是malloc和free而不是delete。这是我写的int*Image=newint[m_Width/2*m_Height];delete[]Image;对吗? 最佳答案 从技术上讲,这是正确的。然而,这是我们正在谈论的C++,动态分配数组的C++方法是使用std:vector代替:std::vectorImage(m_Width/2*m_Heig

c++ - 所有 g++ 版本的 delete[] 可能存在错误或未定义此行为?

这个问题在这里已经有了答案:Whyisitundefinedbehaviortodelete[]anarrayofderivedobjectsviaabasepointer?(5个答案)关闭4年前。我有这段代码,它给了我3个或更多元素的段错误。我在vs和clang上测试并工作(循环结束和二进制结束没有错误)。我做错了什么?或者它是一个g++错误?如果我更改delete[]线到delete[]static_cast(a);它也适用于g++。但是,在实际情况下,我不知道真正的类型,所以我不能转换成任何东西。classA{public:virtual~A(){}virtualintx()=0

c++ - 错误 : use of deleted function for overloaded template

我正在尝试模板特化,但无法确定为什么charconst*const无法在下面解析(尽管是有效类型)的原因。templateBfoo(A)=delete;templatevoidfoo(char*){}templatevoidfoo(charconst*const){}intmain(){{//typesOKcharconst*consta=nullptr;char*b=nullptr;}char*data;foo(data);//OKfoo(data);//ERRORreturn0;}错误error:useofdeletedfunction‘Bfoo(A)[withA=constcha

c++ - 如何让 Oxygen 到 "link"以枚举定义?

我有以下代码:///\fileDoxygen_tests.h/****\enumTick_Column_Type**\briefValuesthatrepresentTick_Column_Type.**/enumTick_Column_Type{TC_OPEN,///一切似乎都工作正常(枚举最终在文件范围内结束,但我有一个\file,所以它与描述一起出现,格式正确。我想要(但没有发生)的是,我希望Tick_Data_Row::m_cols文档中对Tick_Column_Type的引用链接回该文档页面。Doxygen通常似乎很聪明地弄清楚“啊哈,这是一个我知道的名字,我会热链接它”,但

c++ - 为什么 new 和 delete 在 MSVC 2010 下的循环中这么慢

当我尝试在循环中创建和删除类的实例时遇到问题。迭代的执行时间是完全不同的。据我了解,这与从内存中删除对象有关。但是,这个操作的行为我不明白。为什么时间不同?我如何解决它?当我在单独的线程中删除对象时,时间是稳定的。classNODE{public:NODE(){}NODE*add(NODE*node){children.push_back(node);returnnode;}virtual~NODE(){for(vector::iteratorit=children.begin();it!=children.end();++it){delete*it;}}vectorchildren;

c++ - main : linking fortran with C++的多重定义

我想编写一个C++程序,从中调用mvndst_()子例程http://www.math.wsu.edu/faculty/genz/software/fort77/mvndstpack.f在Linux上,如果我创建test.cc:extern"C"{intmvndst_(int*,double*,double*,int*,double*,int*,double*,double*,double*,double*,int*);};intmain(){return0;}并编译通过g++-c-otest.otest.ccgfortran-c-omvndstpack.omvndstpack.fgf

c++ - 为什么 "const T*"在 "void*"中被简单地转换为 "operator delete"?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Deletingapointertoconst(Tconst*)voidoperatordelete(void*);...constchar*pn=newchar,*pm=(char*)malloc(1);deletepn;//allowed!!free(pm);//errorDemo.可以理解,free()是一个函数,所以constvoid*不能转换为void*。但为什么在operatordelete(默认或重载)的情况下允许这样做?它在功能上不是错误的构造吗?