草庐IT

New-Signal-Slot

全部标签

c++ - C++ 'new' 关键字和 C

这个问题在这里已经有了答案:关闭12年前。PossibleDuplicate:UsethekeywordclassasavariablenameinC++在库的C头文件中,我使用的变量之一名为“new”。不幸的是,我在C++项目中使用这个库,并且“new”作为变量名的出现吓坏了编译器。我已经在使用extern"C"{#include},但这在这方面似乎没有帮助。我是否必须要求库开发人员更改该变量的名称,即使从他的角度来看,作为C开发人员,代码绝对没问题,因为“new”不是C关键字?

c++ - 对于 malloc() 失败是否有等效的 set_new_handler()?

在C++中,你can安排一个函数在new失败时调用。有没有办法在malloc失败时调用一个函数?假设正在从我不想更改的第三方库调用malloc。我认为没有可移植的答案,所以我很乐意接受特定于平台的答案。我在某些平台上使用Linux+uclibc,在其他平台上使用Linux+glibc。我打算使用setrlimit限制malloc可以返回的内存量。 最佳答案 malloc如果失败则返回NULL。您应该处理它,以及CRT内存函数的其他故障(realloc尤其容易出错)。在一般情况下,我认为您必须将内存的所有CRT使用包装在您自己设计的函

c++ - 是否可以创建指向函数的 `new` 运算符/构造函数的函数指针?

如果我想要参数化创建一个对象,我当然可以创建一个在特定类上调用new并传递指针的函数。我想知道是否可以跳过该步骤并将函数指针传递给new运算符本身。 最佳答案 boost::lambda提供functionwrappersfornewanddelete.这些可用于轻松地将new调用转换为函数对象。 关于c++-是否可以创建指向函数的`new`运算符/构造函数的函数指针?,我们在StackOverflow上找到一个类似的问题: https://stackover

c++ - 尽管未定义 <new> header ,但 New 会抛出 bad_alloc?

new是怎么回事?程序中的表达式可以抛出bad_alloc尽管没有#include还是出错(因为这个错误isdefinedintheheader)?来自3.7.4。N3337的:Thelibraryprovidesdefaultdefinitionsfortheglobalallocationanddeallocationfunctions.Someglobalallocationanddeallocationfunctionsarereplaceable(18.6.1).AC++programshallprovideatmostonedefinitionofareplaceablea

c++ - 使用参数构造函数模拟 new[]

如果我没有修改参数构造函数中的任何static变量,则低于模拟newT[N](x,y);(数组新的参数)?templatevoid*operatornew[](size_tsize,constT&value){T*p=(T*)malloc(size);for(inti=size/sizeof(T)-1;i>=0;i--)memcpy(p+i,&value,sizeof(T));returnp;}用法将是,structA{A(){}//defaultA(inti,intj){}//witharguments};intmain(){A*p=new(A(1,2))A[10];//instea

c++ - 在 C++ 中调用 "new"时出现段错误?

我在尝试调用“new”来创建指针并将其插入vector时遇到了段错误。我将元素推送到vector中的代码是:queue->push_back(newBox(gen_id,Interval(x_mid,x_end),Interval(y_mid-y_halfwidth,y_mid+y_halfwidth)));基本上Box是一个类,构造函数只需要3个参数,generation_id和2个Intervals。我在这个“推”之前和之后打印出了vector中的内容,之前:[-0.30908203125,-0.3087158203125],[-0.951416015625,-0.95104980

c++ - new 的内存是否必须来自 operator new?

在考虑类似的事情时autox=newT;标准是否强制要求内存必须来自operatornew——类特定的还是全局的?也就是说,如果缺少特定于类的operatornew,则没有办法从除全局operatornew之外的任何地方获取内存? 最佳答案 我认为你的理解方式是错误的。表达式newT总是由两个步骤组成:搜索合适的operatornew。如果一个存在于类T中,则采用那个,否则采用全局的。全局的总是存在的,因为这是标准规定的(所以你永远不能“定义”它(因为它已经被定义),但你可以替换它)。你可以说::newT总是无条件地选择全局oper

c++ - Qt Signal/Slots发送完整结构

我正在尝试通过两个线程之间的信号/槽发送一个结构,我的信号/槽已正确连接并且我已经能够发送包含我的部分数据的QString但现在我需要发送整个东西并且结构似乎最明智的。但是,当我尝试时,信号未发送/接收。问题似乎只是发送/接收结构,我尝试了很多方法之前和之后的处理。我不能使用这样的指针here或here因为我的数据生成速度太快,内存被覆盖或释放(我尝试过使用指针并假设引用也会受到类似的影响)。我已经添加了Q_DECLARE_METATYPE到我的结构。我的结构暂时只是一个小测试(后面会放大),在自己的头文件中。#ifndefRETURNSTRUCT_H#defineRETURNSTRU

c++ - Qt Signal Slot Architecture 不需要的无限循环

我对qt信号槽系统有问题。首先,我创建了一个名为SysteminSingleton模式的类,因此我可以在需要的地方访问它的实例。系统有信号SelectionChanged。我有一个列表小部件,我正在将它的itemSelectionChanged信号连接到我的名为onSelectionChanged的​​自定义插槽。在onSelectionChanged插槽中,我发出系统的SelectionChanged信号。目前还没有问题。在我的软件设计中,许多GUI小部件或自定义类可以使用对象的选择,并且系统的SelectionChanged信号可以由列表小部件以外的小部件发出。所以我在列表小部件中

c++ - 当我们有 new/delete 时,为什么要使用 malloc/free?

当我们在C++中有new和delete时,malloc和free有什么用。我想free和delete的功能是一样的。 最佳答案 它们不一样。new调用构造函数,malloc只是分配内存。此外,它是未定义的行为将两者混合(即使用new与free和malloc与删除).在C++中,你应该使用new和delete,malloc和free是为了与C的兼容性原因。 关于c++-当我们有new/delete时,为什么要使用malloc/free?,我们在StackOverflow上找到一个类似的问题