草庐IT

array_new

全部标签

c++ - 在 C++ 代码生成器中模仿 C# 'new'(隐藏虚方法)

我正在开发一个系统,它采用一组已编译的.NET程序集并发出C++代码,然后可以将这些代码编译到任何具有C++编译器的平台。当然,由于.NET可以做C++做不到的各种事情,这涉及到一些广泛的技巧。其中一种情况是能够隐藏虚拟方法,例如C#中的以下内容:classA{virtualvoidMyMethod(){...}}classB:A{overridevoidMyMethod(){...}}classC:B{newvirtualvoidMyMethod(){...}}classD:C{overridevoidMyMethod(){...}}我想出了一个看起来很聪明并且确实有效的解决方案,如

C++ 强制 new[] 不分配 4 个额外的字节

我正在用C++编写自己的内存系统(出于性能原因、额外的调试信息,以便我可以分配16字节对齐的内存),并且我遇到了new[]问题。似乎调用new[]会导致额外分配4个字节,指示数组中的元素数量,这会导致所有后续对象的对齐失败。所以我的问题是:有什么方法可以通过编译器标志、pragma声明等来关闭这4个额外字节的使用吗?这是一个例子://Matrixclasshastobe16-bytealignedMatrix*transforms=new(matrixHeap,ALIGN_16,__FILE__,__LINE__)Matrix[31];transforms[0]=Matrix::Ide

c++ - 将参数传递给 "array-like"容器构造函数

背景我正在使用具有以下限制的嵌入式平台:没有堆没有Boost库C++11得到支持我过去曾多次处理过以下问题:CreateanarrayofclasstypeT,whereThasnodefaultconstructor该项目最近才添加了C++11支持,到目前为止,每次我不得不处理这个问题时,我都在使用临时解决方案。既然C++11可用,我想我会尝试制定一个更通用的解决方案。解决方案尝试我复制了anexampleofstd::aligned_storage为我的数组类型提出框架。结果如下所示:#includetemplateclassArray{//Providealignedstorag

c++ - 全局重载运算符 new/new[] delete/delete[] C++

我有这个重载operatornew和delete的示例代码#include#include#include#ifdefUSE_ZMALLOCextern"C"{#include"zmalloc.h"}#definem_malloczmalloc#definem_freezfree#else#ifdefUSE_JEMALLOC#include#definem_mallocje_malloc#definem_freeje_free#else#include"malloc.h"#definem_mallocstd::malloc#definem_freestd::free#endif#end

c++ - 用户调用 operator new 时的分配/对象详细信息拦截和收集问题

我正在开发一个小型内存工具,它可以跟踪分配和释放、对象大小、对象类型等。我用来跟踪源文件、行号和对象类型的方法是这样工作的:#defineDEBUG_NEWSourcePacket(__FILE__,__LINE__)*new#definenewDEBUG_NEWSourcePacket只是一个小类,它在构造期间接受一个constchar*和一个int。这些值通过__FILE__和__LINE__宏填充。对象类型是这样获取的:templateT*operator*(constSourcePacket&packet,T*p);p是指向新分配对象的指针,其类型使用RTTI发现。在运算符重载

c++ - bad_alloc 在类 Texture 上调用 new 时

这是有问题的行:Texture*texture=newTexture(...);我在这里收到来自bad_alloc的信息:void*__CRTDECLoperatornew(size_tsize)_THROW1(_STDbad_alloc){//trytoallocatesizebytesvoid*p;while((p=malloc(size))==0)if(_callnewh(size)==0){//reportnomemorystaticconststd::bad_allocnomem;_RAISE(nomem);}return(p);}大小是~28字节大到目前为止,该程序已在32

c++ - dynamic的动态数组(array of struct)

我有一个名为person的结构,如下所示:structperson{intheight,weight;};我还创建了一个person数组,如下所示:structArrayofperson{intlen;//indicatesthelengthofthisarray(itssupposedtobedynamic)person*p;//thisissupposedtobethedynamicarrayofperson.};我对person的数组执行此操作,如下所示:structArray_2d_ofperson{intlen;//indicatesthelengthofthisarray(

c++ - 覆盖 operator new 以合并 PIMPL 分配

PIMPL习语通常用于对象的公共(public)API,有时也包含虚函数。在那里,堆分配通常用于分配多态对象,然后将其存储在unique_ptr或类似的地方。一个著名的例子是QtAPI,其中大多数对象(尤其是QWidgets等)在堆上分配并由QObject父/子关系跟踪。因此,我们为两次分配支付费用,一次是对象本身使用2*sizeof(void*)来保存PIMPL和v_table指针,一次是私有(private)数据本身。现在来回答我的问题:我想知道这两个分配是否可以合并,类似于make_shared应用的优化。然后我想知道这种优化是否值得,因为malloc的实现可能非常擅长处理字大小

javascript - 在插件中使用 nan 接收和返回 Float32Array

我正在尝试使用nan为了计算附加组件中float组的内容,然后将其作为Float32Array返回。但是,虽然args有IsNumber()和NumberValue()函数,但它只有一个IsFloat32Array()函数,没有Float32Array()。我试着查看那些:1,2教程,但没有找到合适的示例。NAN_METHOD(Calc){NanScope();if(args.Length()IsNumber()||!args[1]->IsFloat32Array()){NanThrowTypeError("Wrongarguments");NanReturnUndefined();}

c++ - 如何从 std::array<T, N>::pointer 成员/依赖类型中推断出数组大小?

我的目标是为strcpy编写安全的替代品对于在编译期间已知目标缓冲区大小的情况,我希望推断出缓冲区大小,因此用户不需要知道它。例如:charxs[2]={0};strcpy(xs,"abc");//bufferoverflow!printf("[%s]\n",xs);此输出(希望)是:[abc]对于简单的情况,当传递C风格的数组时,可以毫不费力地写成:templatechar*safe_strcpy(char(&dst)[N],constchar*src)noexcept{std::snprintf(dst,N,"%s",src);return&dst[0];}推导出数组的大小,snp