草庐IT

延时分配

全部标签

c++ - 访问硬盘的未分配空间

如何从Windows访问和写入硬盘驱动器的未分配空间?我所说的未分配HDD空间是指在创建分区后HDD上剩余的空间,或者只是HDD上尚未分配给分区的可用空间。 最佳答案 您需要读取硬盘的分区表,找到未分配的空间,然后读取该空间。此类操作需要直接访问磁盘。在Vista之前,可以调用CreateFile("磁盘本身的特殊名称")像打开文件一样打开磁盘。在Vista和Windows7中,由于Windows的安全限制(至少对于非管理员帐户),它不再可能。您可以使用我们的RawDisk访问磁盘扇区以在Vista和更高版本系统中进行读取和写入的产

python - 如何有效地分配预定义大小的文件并使用 Python 将其填充为非零值?

我正在编写一个程序,使用动态规划来解决一个难题。DP方案需要存储一张大表。整个表占用大约300Gb。物理上它存储在40~7Gb文件中。我用字节\xFF标记未使用的表条目。我想尽快为这张table分配空间。该程序必须同时在Windows和Linux下运行。简而言之,我想以跨平台的方式高效地创建充满特定字节的大文件。这是我目前使用的代码:defreset_storage(self,path):fill=b'\xFF'withopen(path,'wb')asf:for_inrange(3715948544*2):f.write(fill)创建一个7Gb的文件大约需要40分钟。如何加快速度?

python - 在 Python 中释放通过 ctypes 分配的内存

我有一个基于ctypes的库,它包装了一个有时会分配需要释放的内存的C库。在Linux下这很容易,因为常见的glibc功能已链接到该C库中,我可以简单地对其调用free()。但是,当我在Windows下访问第三方编译的库时,似乎无法使用相同的功能。ctypes.util.find_msvcrt()看起来很有希望,但它返回None即使我在Windows下运行。我不确定这是否意味着源DLL是使用Microsoft工具链以外的东西构建的。所以,我只剩下需要释放的内存,而且没有明显、简单的方法来释放它。有人有什么想法吗? 最佳答案 使用MS

c++ - Windows中给进程分配内存时,是否总是会触发页面错误?

我正试图在操作系统级别深入了解Windows内存管理的内部机制。难道在分配内存时,总是在幕后触发页面错误吗?这是否意味着停止软页面错误的唯一方法是停止在进程内分配新内存?定义我将“内存分配”定义为任何形式的malloc,即new、LocalAlloc、VirtualAlloc、HeapAlloc等。我将“页面错误”定义为将内存从操作系统池映射到进程工作集的过程,该操作在高端Xeon上持续花费250us。 最佳答案 你需要非常清楚这里发生的不同事情。该进程有两个独立的部分,提交内存和将内存分页到进程中。这些都与调用malloc、Hea

c++ - 我应该将分配的内存归零吗?

我正在编程tcp套接字,我正在使用structsockaddr_inserver_addr;来设置端口等。在一些教程中我读到我应该将server_addr的内存清零在使用它之前。我是不是该?是否有可能我会得到一些可能导致问题的数据的内存?linux和windows有什么不同吗?谢谢 最佳答案 如果您不初始化保留内存区域,它将包含之前存储在那里的任何值。因此,将其“归零”始终是一个好主意,这意味着用一些值覆盖曾经存在的内容,在本例中为空字节\0。如果您将malloc替换为calloc,这将自动为您完成。无论您是否这样做,都不会影响您从

c++ - 为什么在我分配该类的两个对象时调用我的构造函数?

我很困惑,如果这是显而易见的,我很抱歉。以下是我错了吗:structMyStruct{MyStruct(){};MyStruct(MyStruct*arg){};}MyStruct(MyStruct*参数){};构造函数是否将一个指向MyStruct的指针作为参数?因为我有一个问题,当我这样做时,这个构造函数(我认为是)被调用了:intmain(){MyStructobj;MyStruct*objPtr;obj=objPtr;return0;}当将obj分配给objPtr时,我希望编译器会提示,但它没有,而是调用MyStruct(MyStruct*arg);我认为这是一个采用指针参数的

c++ - Windows上的大型连续虚拟内存分配

最近,我遇到了在具有16GB物理内存的64位Windows系统上分配大约4GB连续内存(物理或虚拟)块的需求。我尝试使用new[]分配此缓冲区,但是它抛出了std::bad_alloc。例如,以下失败:char*buffer=newchar[LARGE_BUFFER_SIZE];当我按块分配缓冲区时(我为一块使用1024字节),但是我可以达到4GB的内存。因此,以下代码不会失败:char**buffer=newchar*[LARGE_BUFFER_SIZE/CHUNK_SIZE];for(size_ti=0;i缺点是内存不连续。是否可以使用Windows提供的C或C++标准库例程或函数

.net - Windows/.NET 负载分配和平衡

是否有经过审查的Windows友好型,甚至.NET原生的负载分配/负载平衡实用程序,与HAProxy一样?我们有一个.NET堆栈产品,我们从堆栈中跳出的一个部分用于负载平衡。我们需要一些具有可配置的分发规则的东西——也许是子域驱动的——NLB似乎无法单独提供。如果它直接与.NET集成,或者提供可由Web服务调用的公开API,那就更好了!提前致谢!澄清:我们需要在逻辑上分开盒子。这不仅仅是集群/故障转移/复制场景。进一步说明:我们是WCF之家。我们的网格上已经有一个自定义路由器和检查器。然而,我们需要在前端进行分发,这是HAProxy目前在我们架构中的位置。然而,我们需要一些我们不必编写

c++ - 将 FILE * 或 HANDLE 转换(分配)到 Windows 中的 IStream

想要编写一个函数,该函数期望一个文件的打开句柄,并且出于某些目的将其转换为IStream以与Wrapper库进行交互我知道的一种方法是,我可以从HANDLE获得一个FILE*,但是我没有得到任何方法来将此FILE*或HANDLE直接转换或分配给IStream(COM)。 最佳答案 你可以试试getfilenamefromHANDLE然后createIStream从路径。 关于c++-将FILE*或HANDLE转换(分配)到Windows中的IStream,我们在StackOverflow

c++ - 强制第 3 方 DirectShow 过滤器使用自定义分配器

在第3方过滤器中使用自定义分配器的原因:我有一个NUMA系统,过滤器在错误的NUMA节点上分配内存会导致性能问题并丢弃从相机接收的图像。我目前的做法:我将编写一个函数来迭代所有过滤器并询问它们的输入引脚是否有分配器。然后我向这个分配器询问我的特殊分配器接口(interface),最后如果没有找到接口(interface)我创建新的自定义分配器并应用与以前的分配器相同的属性。然后我在输入引脚上调用NotifyAllocator以通知它有关新分配器的信息。我试图在图形构建的不同时间调用这个函数;目前在IMediaControl::Pause之后和IMediaControl::Run之前,但