jjzjj

malloc_zone_unregister

全部标签

c++ - malloc 在这段代码中做了什么?

你能解释一下下面的代码吗?str=(char*)malloc(sizeof(char)*(num+1));malloc在这里做什么?为什么使用num+1? 最佳答案 malloc是一个函数thatallocatesachunkofmemoryontheheap并返回pointer给它。它类似于许多语言中的new运算符。在这种情况下,它创建了一个内存块,该内存块可以在任意时间长度内存活并且具有任意大小。这本身就是相当深入的东西,有点难以解释,需要单独提出一个问题。num+1补偿了nullterminator在字符串的末尾。字符串通常需

c++ - 在没有 Malloc/New 或 Free/Delete 的情况下管理连续的内存块

如果没有C++中其他内存管理器(例如Malloc/New)的帮助,如何创建自定义MemoryManager来管理给定的连续内存块?这里有更多的上下文:MemManager::MemManager(void*memory,unsignedchartotalsize){Memory=memory;MemSize=totalsize;}我需要能够使用MemManager分配和释放此连续内存块。构造函数被赋予block的总大小(以字节为单位)。分配函数应以字节为单位获取所需的内存量,并返回指向该内存块开头的指针。如果没有内存剩余,则返回NULL指针。Deallocate函数应接收指向必须释放的

c++ - VC++ 支持_mm_malloc 吗?

VisualStudioC++2008/2010是否正式支持_mm_malloc?它在malloc.h中定义,但我在MSDN库中找不到它的描述。 最佳答案 没有直接回答您的问题,但我认为您应该使用_aligned_malloc.如果我的理解是正确的,_mm_malloc适用于英特尔编译器。 关于c++-VC++支持_mm_malloc吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questio

c++ - new/malloc 或 delete/free 是否占用或使缓存行无效?

我对缓存行为很好奇。下面是一些与缓存相关的问题:写操作是否将数据带入缓存?考虑像A[i]=B[i]这样的赋值,A[i]会被加载到缓存中吗?因为我只是将一些东西写入A[i]而不是读取它的值。分配大内存时,内存可能来自操作系统。出于安全原因,操作系统会将数据初始化为零(Reference)。如果赋值会把数据带入缓存(问题1),这种机制会占用缓存吗?假设有一个已分配的数组B,并且整个B现在都在缓存中。释放数组B后,B占用的缓存行是否会立即失效(可用)?有人可以给我提示吗? 最佳答案 从这里https://people.freebsd.or

c++ - _Unwind_SjLj_Unregister 和 _Unwind_SjLj_Register 是什么?

什么是_Unwind_SjLj_Unregister和_Unwind_SjLj_Register?在我的gprof报告中,我将它们列为处理器时间最高的用户。谷歌只返回提示这两个错误的人的链接。这是我报告中唯一有时间!=0的部分:Flatprofile:Eachsamplecountsas0.01seconds.%cumulativeselfselftotaltimesecondssecondscallsms/callms/callname33.330.030.03_Unwind_SjLj_Unregister22.220.050.02_Unwind_SjLj_Register11.11

c++ - Visual C++ 运行时 malloc/free 会将内存返回给操作系统吗?

问题与Willmallocimplementationsreturnfree-edmemorybacktothesystem?非常相似,但我对Windows/MicrosoftVisualStudio的答案以及有关确切虚拟内存状态的详细信息感兴趣。请问VisualC++CRTfree将内存还给系统?关于虚拟内存分配,内存的确切状态是什么?对一个大内存块做free之后,block中的内存是committed,reserved,还是free?如果我调用_heapmin怎么办?免费后? 最佳答案 查看2010的源码,可以看到malloc/

c++ - LD_PRELOAD 仅适用于 malloc,不是免费的

我正在尝试通过LD_PRELOAD将malloc/free/calloc/realloc等插入到一些插入器中。在我的小测试中,似乎只有malloc被插入,即使free被检测到(见输出)。我希望输出包含一行“NANO:free(x)”——但缺少这一行。给定//compilewith:gcctest.cc#include#includeintmain(intargc,char*argv[]){void*p=malloc(123);printf("HOSTp=%p\n",p);free(p);}和//compilewith:g++-O2-Wall-fPIC-ldl-olibnano.so-s

c++ - 我们应该删除一个不是 new/malloc 的指针吗?

classClassA{public:ClassA(ClassB*p)b(p){}~ClassA(){deleteb;}ClassB*b;};这样的设计好吗? 最佳答案 答案是视情况而定。您必须明确谁负责对象的生命周期。此外,ClassA缺少用户定义的复制构造函数和赋值运算符,这可能会导致未定义的行为。例如:ClassAobject1(newClassB());//object1takesownershipoftheobjectClassAobject2(object1);//object2takesownershipofthesa

time_zone_select排序选择以显示我们的时区

我正在尝试使用Time_zone_select方法导轨为形式的建筑商提供。这很棒,但我想提供更好的UX。是否可以首先列出美国时区,而不是所有选项都按字母顺序排列?看答案是的,您可以使用priority_zones选项(第二个参数,您将其设置为nil),收到一个数组ActiveSupport::TimeZone对象。对于美国区域,您可以使用ActiveSupport::TimeZone.us_zones,例如:如何设置默认值?只是添加default选项,例如:您可以阅读更多有关time_zone_select这里.

c++ - malloc分配的对象动态类型是什么?

例如,C++标准指的是术语“动态类型”(而C标准在类似上下文中指的是“有效类型”)Ifaprogramattemptstoaccessthestoredvalueofanobjectthroughaglvalueofotherthanoneofthefollowingtypesthebehaviorisundefined:thedynamictypeoftheobject,但是用malloc分配的对象的动态类型是如何确定的呢?例如:void*p=malloc(sizeof(int));int*pi=(int*)p;pi指向的对象的动态类型是否为int? 最佳