m_ofstream.write(p,nLen);
问题在于如果在write这句设置断点 或者说是单步执行这些操作的时候会提示invalid handle.
但是如果没有断点或是在非调试模式下面则文件写入正常
在网上找了一阵子 到是没发现这样的怪现像 有谁碰到过?指点一下
16 个解决方案
#1
list<int>::iterator temp;
for( iter = ilist.begin(); iter != ilist.end(); iter++ )
{
temp = iter++;
if( *iter % 2 != 0 )
{
ilist.erase( temp );
}
//cout<<" " <<*iter;
}
类似这样,但是这样会不去判第一个元素,你可以把第一个元素单独考虑
for( iter = ilist.begin(); iter != ilist.end(); iter++ )
{
temp = iter++;
if( *iter % 2 != 0 )
{
ilist.erase( temp );
}
//cout<<" " <<*iter;
}
类似这样,但是这样会不去判第一个元素,你可以把第一个元素单独考虑
#2
m_ofstream.open(name,ios::out , 0) ;
将第三个参数 0 去掉看看
将第三个参数 0 去掉看看
#3
晕了,是我理解错了,还是楼上的发错位置了?
#4
to tuxw(醉书生) : 我曾去掉试过
一般情况下是第二次write的时候
功能是进行文件传输 打开文件后收到就写一下 我跟了好几次都是第二次写的时候出错了
first-chance exception in a.exe (ntdll.dll) :0xc00000008 :invalid handle
一般情况下是第二次write的时候
功能是进行文件传输 打开文件后收到就写一下 我跟了好几次都是第二次写的时候出错了
first-chance exception in a.exe (ntdll.dll) :0xc00000008 :invalid handle
#5
帖错了,不好意思
#6
我试的怎么没问题(XP 、 VC6+SP6)
#include <iostream.h>
#include <fstream.h>
void main()
{
ofstream fos;
fos.open("txt.txt", ios::out, 0);
//fos.open("txt.txt", ios::out);
for(int i=0; i<5; ++i)
{
fos.write("abc", 3);
}
fos.close();
ifstream fis;
fis.open("txt.txt", ios::in);
cout << fis.rdbuf() << endl;
fis.close();
}
#include <iostream.h>
#include <fstream.h>
void main()
{
ofstream fos;
fos.open("txt.txt", ios::out, 0);
//fos.open("txt.txt", ios::out);
for(int i=0; i<5; ++i)
{
fos.write("abc", 3);
}
fos.close();
ifstream fis;
fis.open("txt.txt", ios::in);
cout << fis.rdbuf() << endl;
fis.close();
}
#7
用if(!m_ofstream)
看文件是否打开成功
看文件是否打开成功
#8
对了,这个帖应该移到 C++ 去
#9
你设成追加模式呢?
fos.open("txt.txt", ios::out | ios::app);
fos.open("txt.txt", ios::out | ios::app);
#10
如果加判断
if(fos)
fos.write(..);//第一次执行即出错了
我觉得太奇怪了 如果说是代码有问题吧 为什么在非调试下面又是正常的咧?
在收到传输文件请求的时候按文件名open,然后收到之后write,收到结束串时close
再一次检查了代码 好像没啥问题啊
代码比较长 不方便贴出来
if(fos)
fos.write(..);//第一次执行即出错了
我觉得太奇怪了 如果说是代码有问题吧 为什么在非调试下面又是正常的咧?
在收到传输文件请求的时候按文件名open,然后收到之后write,收到结束串时close
再一次检查了代码 好像没啥问题啊
代码比较长 不方便贴出来
#11
真是奇怪透顶了...有没有谁碰到过这种情况了
#12
应该是中断不允许在那之中吧。。我没遇到过。。
#13
程序是多线程 不过我在调试的时候都只开了一个客户端
这会儿多数调试的时候在if(fos)处都非法了
这会儿多数调试的时候在if(fos)处都非法了
#14
vc6的话,调试程序是会出问题的
#15
to yjh1982(血精灵) why
#16
我哪知道,反正我也碰到过就是了.
尤其是调试多线程和dll的时候.
尤其是调试多线程和dll的时候.
#1
list<int>::iterator temp;
for( iter = ilist.begin(); iter != ilist.end(); iter++ )
{
temp = iter++;
if( *iter % 2 != 0 )
{
ilist.erase( temp );
}
//cout<<" " <<*iter;
}
类似这样,但是这样会不去判第一个元素,你可以把第一个元素单独考虑
for( iter = ilist.begin(); iter != ilist.end(); iter++ )
{
temp = iter++;
if( *iter % 2 != 0 )
{
ilist.erase( temp );
}
//cout<<" " <<*iter;
}
类似这样,但是这样会不去判第一个元素,你可以把第一个元素单独考虑
#2
m_ofstream.open(name,ios::out , 0) ;
将第三个参数 0 去掉看看
将第三个参数 0 去掉看看
#3
晕了,是我理解错了,还是楼上的发错位置了?
#4
to tuxw(醉书生) : 我曾去掉试过
一般情况下是第二次write的时候
功能是进行文件传输 打开文件后收到就写一下 我跟了好几次都是第二次写的时候出错了
first-chance exception in a.exe (ntdll.dll) :0xc00000008 :invalid handle
一般情况下是第二次write的时候
功能是进行文件传输 打开文件后收到就写一下 我跟了好几次都是第二次写的时候出错了
first-chance exception in a.exe (ntdll.dll) :0xc00000008 :invalid handle
#5
帖错了,不好意思
#6
我试的怎么没问题(XP 、 VC6+SP6)
#include <iostream.h>
#include <fstream.h>
void main()
{
ofstream fos;
fos.open("txt.txt", ios::out, 0);
//fos.open("txt.txt", ios::out);
for(int i=0; i<5; ++i)
{
fos.write("abc", 3);
}
fos.close();
ifstream fis;
fis.open("txt.txt", ios::in);
cout << fis.rdbuf() << endl;
fis.close();
}
#include <iostream.h>
#include <fstream.h>
void main()
{
ofstream fos;
fos.open("txt.txt", ios::out, 0);
//fos.open("txt.txt", ios::out);
for(int i=0; i<5; ++i)
{
fos.write("abc", 3);
}
fos.close();
ifstream fis;
fis.open("txt.txt", ios::in);
cout << fis.rdbuf() << endl;
fis.close();
}
#7
用if(!m_ofstream)
看文件是否打开成功
看文件是否打开成功
#8
对了,这个帖应该移到 C++ 去
#9
你设成追加模式呢?
fos.open("txt.txt", ios::out | ios::app);
fos.open("txt.txt", ios::out | ios::app);
#10
如果加判断
if(fos)
fos.write(..);//第一次执行即出错了
我觉得太奇怪了 如果说是代码有问题吧 为什么在非调试下面又是正常的咧?
在收到传输文件请求的时候按文件名open,然后收到之后write,收到结束串时close
再一次检查了代码 好像没啥问题啊
代码比较长 不方便贴出来
if(fos)
fos.write(..);//第一次执行即出错了
我觉得太奇怪了 如果说是代码有问题吧 为什么在非调试下面又是正常的咧?
在收到传输文件请求的时候按文件名open,然后收到之后write,收到结束串时close
再一次检查了代码 好像没啥问题啊
代码比较长 不方便贴出来
#11
真是奇怪透顶了...有没有谁碰到过这种情况了
#12
应该是中断不允许在那之中吧。。我没遇到过。。
#13
程序是多线程 不过我在调试的时候都只开了一个客户端
这会儿多数调试的时候在if(fos)处都非法了
这会儿多数调试的时候在if(fos)处都非法了
#14
vc6的话,调试程序是会出问题的
#15
to yjh1982(血精灵) why
#16
我哪知道,反正我也碰到过就是了.
尤其是调试多线程和dll的时候.
尤其是调试多线程和dll的时候.