草庐IT

new_feature

全部标签

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++ - 当我们有 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上找到一个类似的问题

c++ - 在同一指针上多次使用 "new"

当我做类似的事情时会发生什么int*ptr=newint;*ptr=5;//...dosomestuffhereptr=newint;//...reuseptrtodosomeotherstuff相对于int*ptr1=newint;*ptr1=5;//...dosomestuffheredeleteptr1;int*ptr2=newint;//...useptr2now????同样的事情会发生在硬件层面吗?换句话说,在第一种情况下,ptr=newint;是否从其先前的指针/值对继续前进,那些旧值会发生什么变化?它们会被替换吗?它们会漂浮在某个地方吗? 最佳

c++ -::new 是什么意思?

检查MSdirectX11DXUT示例时,出现以下代码:templateHRESULTCGrowableArray::SetSize(intnNewMaxSize){intnOldSize=m_nSize;if(nOldSize>nNewMaxSize){assert(m_pData);if(m_pData){//Removingelements.Calldtor.for(inti=nNewMaxSize;i这可以在我的DXSDK版本(2010年6月)的第428行的DXUTmisc.h中找到。我想知道那个::new东西....我正在尝试使用Google搜索堆栈溢出,但当我键入“::ne