草庐IT

min_free_kbytes

全部标签

c++ - 编写加载 msvcr80.dll 并公开 free() 函数的 DLL

我有一个依赖于MSVCR80并分配我需要清理的资源的第三方DLL。该库不公开用于执行此操作的免费函数。相反,我需要加载相同的运行时库并手动调用free函数。作为解决方法,我正在尝试编写一个“包装器”DLL,它加载正确的运行时并公开free函数。此DLL是使用VisualStudio2010创建的,并且依赖于单独的运行时库。执行LoadLibrary("msvcr80.dll")失败并出现错误R6034,我猜这是因为明显的问题。甚至可以使用LoadLibrary加载msvcr80.dll吗?我是否需要创建一个list,将其嵌入DLL并将msvcr80.dll存储在与我的包装器DLL相同的

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

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

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

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

c++ - libc++ 中的 std::min 没有悬挂引用

众所周知(或者应该是)绑定(bind)std::min的结果到const引用是一个非常糟糕的主意,每当std::min的参数之一时是右值,因为const引用绑定(bind)不会通过函数返回传播。所以下面的代码#include#includeintmain(){intn=42;constint&r=std::min(n-1,n+1);//risdanglingafterthislinestd::cout应该产生未定义的行为,因为r悬空。事实上,在使用-Wall-O3使用gcc5.2进行编译时编译器吐了warning:isuseduninitializedinthisfunction[-W

c++ - std::min 正在重新定义,但如何定义?

streflop或boost库会更改std::min的定义吗?我有一个使用g++/make编译良好的项目,直到我将它与另一个项目的CMake构建合并(使用add_directory)。突然我得到:nomatchingfunctionforcalltomin(double&,float)它声称错误所在的行号是错误的(它指向源文件的最后一行)但我假设相关代码是这样的:first=std::min(first,key.mTime);其中first被声明为double。“父”项目(SpringRTS)使用boost和streflop,但即使在替换了所有包含之后也是如此与"streflop_co

c++ - 当摆脱模偏差时,min = -upper_bound % upper_bound;//如何工作?

在answerstothisotherquestion,提供以下解决方案,由OpenBSD提供,为简洁起见重写,uint32_tfoo(uint32_tlimit){uint32_tmin=-limit%limit,r=0;for(;;){r=random_function();if(r>=min)break;}returnr%limit;}uint32_tmin=-limit%limit这行究竟是如何工作的?我想知道的是,是否有数学证明它确实计算了随机数的某个下限并充分消除了模偏差? 最佳答案 在-limit%limit中,考虑-

c++ - Eigen 错误 : please_protect_your_min_with_parentheses

我正在尝试通过运行包附带的测试代码来测试Eigen的非线性优化功能。我被这些错误困住了(更像是困惑):Error5errorC2039:'please_protect_your_min_with_parentheses':isnotamemberof'std::numeric_limits'c:\programfiles(x86)\microsoftsdks\windows\v7.0a\include\eigen-eigen-5097c01bcdc4\unsupported\eigen\src\nonlinearoptimization\lmpar.h184Error7errorC20

c++ - DBL_MIN 是最小的正 double 吗?

问:DBL_MIN是最小的正double吗?下面的代码似乎没有回答这个问题。但如果这是真的,那么DBL_MIN是如何定义的,它的用途或目的是什么。平台:Windows7&VisualStudio2013doublenext_to_zero=std::nextafter(0.0,DBL_MIN);boolb=DBL_MIN输出:isdbl_minthesmallestrepresentabledouble?falsedbl_min=2.2250738585072013830902327173324040642192159804623318306e-308nexttozero=4.9406

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

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

c++ - x64 free 性能低下

我有一个这样的类(假设所有malloc都成功)classCMyClass{public:CMyClass(){lpData=malloc(128);};~CMyClass(){free(lpData);};public:LPVOIDlpData;};然后我执行这个:CMyClass*lpList=newCMyClass[32768];delete[]lpList;问题在于,在x86中,代码运行良好且快速(在调试和发布版本中完成几毫秒),但在x64中,删除调用需要大约15秒来释放所有内存。操作系统是Win7x64。将不胜感激。问候,毛罗。 最佳答案