|
1
4
我们遇到了一个非常相似的问题,我们很容易就能复制出来。我们首先编译了以下程序:
现在,假设您正在使用计算机mycomputer,C:\inbox映射到共享文件夹\\mycomputer\inbox。然后观察以下效果:
请注意,如果len更改为60000000,则没有问题。.. 基于此网页 support.microsoft.com/kb/899149 ,我们认为这是“操作系统的局限性”(fwrite也观察到了同样的效果)。我们的解决方案是,如果写入失败,尝试将写入切成63 MB的块。此问题显然已在Windows Vista上得到纠正。 西蒙 |
|
|
2
1
你看了实施情况吗
至少有两种情况会导致
如果你能可靠地重现这个问题,你应该能够通过在CRT源代码中设置错误代码的部分设置断点来缩小错误的来源。似乎CRT的调试版本能够在错误发生时断言,但可能需要 tweaking some options (我还没试过)。 |
|
|
3
1
根据 http://msdn.microsoft.com/en-us/library/1570wh78(v=VS.90).aspx errno可以接受以下值:
窗户上没有EINTR。随机系统中断会导致此错误,并且不会被测试捕获
|
|
|
4
0
你可能会不小心在其他地方误用指针,从而破坏自己的堆栈——如果你能找到一台复制机,试着在打开所有内存检查的情况下在Application Verifier下运行你的应用程序 |
|
|
5
0
我想到了两个想法。。要么您正走过缓冲区的尽头,试图将数据写出来,要么缓冲区的分配失败。在调试模式下,问题不会像在发布模式下那样明显。 无论如何,分配250兆内存可能是个坏主意。你最好分配一个固定大小的缓冲区,并分块写。 您是否寻找过病毒扫描程序之类的东西,这些东西可能会在您的写入操作之间保留文件,从而导致写入失败? 我知道在一次调用中可以传递写入的数据量没有限制,除非(就像我说的)你正在写入不属于你的数据(作为缓冲区的一部分)。.. 由于这些函数中的大多数都封装了内核调用WriteFile()(或NtWrite File()),因此可能会出现内核内存不足以处理缓冲区写入的情况。但是,我不确定,因为我不知道代码什么时候从UM跳到KM。 不知道这些是否会有所帮助,但希望如此。.. 如果你能提供更多细节,请提供。有时,仅仅告诉别人这个问题就会触发你的大脑“等一下!”,你会想出来的。嘿。。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |