草庐IT

MALLOC_MMAP_THRESHOLD

全部标签

c++ - 如果使用 delete 释放使用 malloc() 获得的内存,是否应该产生警告甚至断言失败?

在C++中,使用delete来释放通过malloc()获得的内存并不一定会导致程序崩溃。如果使用delete来释放使用malloc()获得的内存,是否应该产生警告甚至断言失败?为什么Stroustrup在C++上没有这个功能? 最佳答案 InC++usingdeletetofreememoryobtainedwithmalloc()doesn'tnecessarilycauseaprogramtoblowup.不,但它必然会导致未定义的行为,这意味着任何事情都可能发生,包括程序崩溃或程序继续以看似正确的方式运行。Doyouguyst

c++ - 使用 operator new/malloc 分配的内存块能否在程序执行结束后持续存在?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:WhenyouexitaCapplication,isthemalloc-edmemoryautomaticallyfreed?当我阅读有关在C/C++中的动态内存分配方面分别使用delete/free的强制性时,我想到了这个问题。我想如果内存分配在我的程序执行终止之后仍然存在,那么是的,它是强制性的;否则,我为什么要担心释放分配的空间?操作系统不会在进程终止时自动释放它吗?我有多正确?我的问题是可以int*ip=newint(8);在我的程序终止后仍然存在? 最佳答案

c++ - 可以从用户空间找到 mmap 页面的脏污度吗?

可以从linux2.6.30+下的用户空间访问(非共享)mmap页面的脏度吗?欢迎使用特定于平台的hacks和kludges。理想情况下,我正在寻找一个位数组,mmap'ed区域的每页(4kB?)一个位,如果在该区域被mmap'ed后已写入该页面,则设置这些位。(我知道,进行写入的进程可以跟踪这些信息-但如果内核仍然这样做,这样做似乎很愚蠢。)谢谢,克里斯。 最佳答案 参见/proc/*/pagemap和/proc/kpageflags接口(interface)。首先告诉你一个地址的PFN,第二个告诉你给定PFN的脏位。参见fs/p

c++ - new 在堆栈而不是堆上(如 alloca 与 malloc)

有没有办法使用new关键字在堆栈上分配(alaalloca)而不是堆上(malloc)?我知道我可以自己破解,但我不想这样做。 最佳答案 要在堆栈上分配,要么将你的对象声明为局部变量按值,或者你可以实际使用alloca获取指针,然后使用就地new运算符:void*p=alloca(sizeof(Whatever));new(p)Whatever(constructorArguments);但是,虽然使用alloca和in-placenew可确保在返回时释放内存,但您放弃了自动析构函数调用。如果您只是想确保在退出范围时释放内存,请考虑

c++ - 是否可以将 C++ 智能指针与 C 的 malloc 一起使用?

我的一些代码仍然使用malloc而不是new。原因是我害怕使用new因为它会抛出异常,而不是返回NULL,我可以轻松检查它。将每个对new的调用包装在try{}catch(){}中也看起来不太好。而当使用malloc我可以只做if(!new_mem){/*handleerror*/}.因此我有一个问题。我可以将智能指针与malloc一起使用吗?类似:SmartPointersmarty=malloc(sizeof(Type));类似的东西。这可能吗?谢谢,博达·赛多。 最佳答案 如果您使用shared_ptr或unique_ptr,

Linux 上的 Python mmap 'Permission denied'

我有一个非常大的文件,我正在尝试使用mmap打开它,但它给我的权限被拒绝。我尝试了os.open的不同标志和模式,但它对我不起作用。我做错了什么?>>>importos,mmap>>>mfd=os.open('BigFile',0)>>>mfile=mmap.mmap(mfd,0)Traceback(mostrecentcalllast):File"",line1,inmmap.error:[Errno13]Permissiondenied>>>(使用内置的open()通过python文档示例工作,但它似乎在读写模式下都打开了多个文件句柄。我只需要mmap.mmap方法是文件号,所以我

python - numpy 与多处理和 mmap

我正在使用Python的multiprocessing模块来并行处理大型numpy数组。数组在主进程中使用numpy.load(mmap_mode='r')进行内存映射。之后,multiprocessing.Pool()fork进程(我猜)。一切似乎都运行良好,除了我得到如下行:AttributeError("'NoneType'objecthasnoattribute'tell'",)in``ignored在单元测试日志中。尽管如此,测试还是通过了。知道那里发生了什么吗?使用Python2.7.2、OSX、NumPy1.6.1。更新:经过一些调试,我找到了一个代码路径的原因,该路径使

android - Android Logcat 中的 GC_FOR_MALLOC、GC_EXPLICIT 和其他 GC_* 是什么意思?

如果您查看Android日志,您可能会看到很多此类内容。它们是什么意思,知道这些可能有助于我们更好地分配内存。例子:28470dalvikvmDGC_FOR_MALLOCfreed665objects/239992bytesin71ms28470dalvikvmDGC_FOR_MALLOCfreed673objects/240288bytesin87ms21940dalvikvmDGC_EXPLICITfreed4802objects/185320bytesin78ms28470dalvikvmDGC_FOR_MALLOCfreed666objects/240536bytesin63m

mongoDB查询 "WHERE _id > threshold"

我怎样才能有一个类似于SQL“...WHERE_id>threshold”的mongo查询我尝试了以下方法,但没有任何结果。db.things.find(_id:{$gt:someid}});是不是因为_id字段有点特殊,有格式?_id:{"$oid":"someid"} 最佳答案 比较喜欢和喜欢mongo中的_id键不是(默认情况下)字符串-它是mongoobjectId。需要与同类型比较才能得到有意义的结果:varObjectId=require('mongodb').ObjectID;varoid=newObjectId();

c++ - 为什么 Malloc() 关心边界对齐?

我听说malloc()根据分配的类型对齐内存。例如,来自UnderstandingandUsingCPointers一书:Thememoryallocatedwillbealignedaccordingtothepointer'sdatatype.Foreexample,afour-byteintegerwouldbeallocatedonanaddressboundaryevenlydivisiblebyfour.如果我跟随,这意味着int*integer=malloc(sizeof(int));将分配在可被四整除的地址边界上。即使没有在malloc上强制转换(int*)。我在一个聊