草庐IT

分配数

全部标签

c++ - 是否有可能获得由 'new' 分配的内存块大小?

你好,我需要记录我的堆,但现在我只想用我的函数重载"new"运算符。我需要总结在malloc()或Heap*()或其他windowsmem*函数之后增加的内存的实际字节数但现在我需要分析当前的堆实现。是否有可能获得像HeapAlloc()函数分配的block大小-HeapSize()?. 最佳答案 我看你没有搜索文档。HeapSize()exists.编辑回想起来,也许您正在寻求HeapSize()的替代方案,您可以在使用新。答案是否定的。标准分配例程没有任何关于内存块的信息,因为:这高度依赖于实现,并且您已经知道block大小(因

c++ - 奇怪的 malloc 行为不允许在 64 位进程上分配超过 2GB 的内存

这个问题涉及我正在开发的一个程序。我从事的项目要求不通过网络发送行集或大于2GB的行(网络不能发送大于2GB的数据组)。我已经对代码进行了所有适当的更改,因此它不会发送这个/这些组,但现在我正在尝试构建测试用例。我已经构建了一个测试,它创建了不到10亿行,这些行占用了超过2GB的空间。在通过网络发送这些行之前,程序会正确地过滤掉它们。我遇到的问题是我需要创建一个单独的行来保存一个包含单个字符串的列或列的集合,在该行内,保存字符串,其中该行的大小大于2GB。但是当字符串开始占用接近2GB时,malloc返回NULL。我做了一些研究,发现可能是我没有足够的连续内存,所以我开始添加更多带有较

c++ - Windows 堆分配调用堆栈 - 奇怪的调用堆栈

我正在尝试分析托管进程内存转储,怀疑是否存在native内存泄漏。为了能够使用windbg(并从那里使用!heap扩展),我为服务器进程激活了用户模式调用堆栈我看到很多大小为68的block。在这些block中(我可以使用!heap-p-a手动验证的block)有许多调用堆栈的形式!heap-p-a000000003ca5cfd0address000000003ca5cfd0foundin_HEAP@1ea0000HEAP_ENTRYSizePrevFlagsUserPtrUserSize-state000000003ca5cfa000090000[00]000000003ca5cfd

windows - Windows 7 格式化驱动器上的 FAT32 文件分配表大小超出 FAT32 规范

我正在编写一个嵌入式FAT32驱动程序。我有问题。我用零填充我的金士顿DTR30G2高达1GB,并将其插入Windows7盒子,并将其格式化为FAT32。然后,在我的Linux机器上,我将1GB的闪存转储到文件中并在十六进制编辑器中打开它并获得以下值:uint16_tBPB_ResvdSecCnt=32atoffset0xEuint8_tBPB_SecPerClus=8atoffset0xDuint8_tBPB_NumFATs=2atoffset0x10接下来,我查看FAT32卷ID中的扇区总数:uint32_tDskSize=30734336atoffset0x20和Linux报告一

Python检测USB驱动器然后分配驱动器号?

问题来了。我们有数百个外部500gbUSB驱动器。在这一年中,每次驾车都会前往一个新的地点。自动检测USB驱动器已插入Windows系统,然后分配Z:\盘符的最佳方法是什么?这些USB驱动器将插入许多不同的计算机,因此像这样的脚本importsubprocessdiskpart_data="z-drive.txt"open(diskpart_data,"w").write("""selectvolumeF:assignletter=Z""")subprocess.call('diskpart/s%s'%diskpart_data)由于移动USB驱动器始终在不同Windows系统上的动态

c++ - 如何强制 C++ 从磁盘分配内存?

我有数千行C++代码,这些代码在小文本文件上运行良好,但在大文本文件(例如2GB大小)上会崩溃。崩溃原因:应用占用内存。是否可以从磁盘分配内存?因为在大多数情况下,硬盘空间远大于物理内存。如果我可以从硬盘为我的应用程序借用一些空间并在使用后将它们归还,那么我的应用程序崩溃的可能性很小。以下是我的设计思路:为文件映射创建临时文件(CreateFileMapping,OpenFileMapping)强制我的应用从临时文件分配内存做一些清理工作:CloseFileMapping并删除临时文件因为我现有的代码太多,如果我的设计思路合理,我不想重新设计我的项目。我不确定这个设计思想是否可以实现。

c++ - 在不同的线程上解除分配 BSTR 是否安全?

如果我在一个线程上调用一个返回BSTR的COM方法,那么从另一个线程?COM调用完成后,我将不再在第一个线程上使用BSTR,因此应该不会有任何并发​​问题。但是考虑到COM与线程的关系,我不确定SysFreeString()是否依赖于在同一线程上分配的BSTR。示例代码:BSTRvalue=nullptr;HRESULThr=pComObject->DoSomething(&value);if(FAILED(hr)){returnhr;}std::threadt([value]{//dosomethingwithvalueSysFreeString(value);});t.detach

windows - 如何限制应用程序可以分配的内存

我需要一种方法来限制服务可以分配的内存量,以防止服务使系统饿死,类似于SQLServer允许您设置“最大服务器内存”的方式。我知道SetProcessWorkingSetSize并不完全符合我的要求,但我正在努力让它按照我认为应该的方式运行。无论我使用什么值,我的测试应用程序的工作集都没有限制。此外,如果我随后立即调用GetProcessWorkingSetSize,则返回的值不是我之前指定的值。这是我的测试应用程序使用的代码:varMinWorkingSet:SIZE_T;MaxWorkingSet:SIZE_T;beginifnotSetProcessWorkingSetSize(

windows - 句柄分配在哪里?

我想知道是否可以使用WinDbg来了解导致分配句柄的调用堆栈。例如:#include#include#includeusingnamespacestd;int_tmain(intargc,_TCHAR*argv[]){cout构建此示例并在WinDbg中启动它后,是否有可能获得分配句柄的调用堆栈,在该行上方的示例中:HANDLEh=CreateEvent(NULL,FALSE,FALSE,NULL);我正在研究!handle命令,但到目前为止没有任何进展。这与处理泄漏分析有关。我知道!htrace-enable和!htrace-diff但这是不同的使用场景(除非有某种组合方式或其他使用

c# - 使用新处理程序附加事件处理程序与直接分配它

创建新事件处理程序与直接将其分配给事件的实际区别、优点和缺点是什么?_gMonitor.CollectionChanged+=newNotifyCollectionChangedEventHandler(OnCollectionChanged);对比_gMonitor.CollectionChanged+=OnCollectionChanged; 最佳答案 在C#2.0及更高版本中,它们是相同的。在C#1.2(.NET1.1附带的那个)中,只有第一个语法(使用new)编译;-p第二种语法可以节省按键操作,但VS智能感知通常会建议第一