在我描述我的问题之前,这里是我正在编写的程序的描述:
这是一个C ++应用程序。
我的程序的目的是在RAM内存上创建文件。
如果指定FILE_ATTRIBUTE_TEMPORARY |,我会读到创建文件时FILE_FLAG_DELETE_ON_CLOSE将直接加载到RAM内存中。
其中一个博客就是这个:http://blogs.msdn.com/larryosterman/archive/2004/04/19/116084.aspx
我已经建立了一个迷你程序,但它没有实现目标。相反,它在我指定的目录上的硬盘驱动器上创建一个文件。
这是我的计划:
void main ()
{
LPCWSTR str = L“c:\ temp.txt”; HANDLE fh = CreateFile(str,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_TEMPORARY | FILE_FLAG_DELETE_ON_CLOSE,NULL);
if(fh == INVALID_HANDLE_VALUE) { printf(“无法打开TWO.TXT”); 返回; }
DWORD dwBytesWritten;
for(long i = 0; i <20000000; i ++) { WriteFile(fh,“这是一个测试\ r \ n”,16,&amp; dwBytesWritten,NULL); }
返回; }
我认为CreateFile函数存在问题,但我无法修复它。请帮帮我。
答案 0 :(得分:2)
如果你超过可用内存,那么 内存管理器将刷新文件 数据到磁盘。这导致了 性能命中,但你的操作 会成功而不是失败。
因此操作系统会创建该文件,以防因内存限制而需要刷新数据。