收录日期:2018/04/27 01:31:31 时间:2016/05/18 06:55:15 标签:硬件/系统
程序中需要抢占空间,一开始运行时标记一部分空间为已用空间,使其它用户不能够使用,而自己可以使用,程序结束后将多余的空间再释放。该如何做?清高手们帮帮忙!!!!!
为什么没有人理,进来的帮我up一下也可以。
分不够还可以另开贴再加。
抢占,为什么不用同步对象呢?
char *p = new char[100000] ;

最后再
delete p;
for Sample: 
if two threads process the memory that p points.

int pp=0;
char *p = new char[10]
enter  criticalsection
p[pp++]='A';
leave  criticalsection
 the memory behind pp is free.
我要的是硬盘空间不是内存。
需要在硬盘上保存大量内容,保存前计算了一下硬盘空间满足要求,我就要占下来,防止用户在我的程序保存过程中使用这部分空间,造成后来空间不够用。
你先生成一个大内容为0的文件,然后再慢慢裁减拉,数据库就是用这种技术。
to benztoy(benz)
怎样生成一个大内容为0的文件。
设定文件大小后再往里写数据时,数据是加在后面的,怎样收回原来的空间?

怎么了没人理了?大家都来说一下自己的意见嘛。
fseek函数可以调整读写文件的位置。
很简单的,自己查一下吧。

没人理你是因为你提错问题了。
CFile fThis;
fThis.Seek(-long(sizeof(DATA_TAIL)),CFile::end);

这样数据是文件当前位置读取或写入的。 当前位置有seek指定。

CFile fTest( "ab.txt", CFile::modeCreate | CFile::modeReadWrite );

const int SIZE = 1000;
char* p = new char[SIZE];
for( int i = 0; i< SIZE; i++ )
{
p[i] = 'a';
}

fTest.Write( p, SIZE );


fTest.SetLength(100);// !!!可以将多余的文件空间去掉。

有个变态的方法,就是直接修改分区的磁盘空间使用位图,对于fat文件系统,修改文件分配表,对于nfts,修改使用位图,够bt了吧