psa zzz = new sa;
怎么能这样??
psa *zzz = new sa;
怎么能这样??
psa *zzz = new sa;
解决方案 »
- 在VC++里使用ADO连接数据库出现以下错误求解决
- 怎样在子线程都结束的时候重新让主线程运行?
- 刷新字体的问题
- windows 程序设计这本书你们用什么编译器
- --==急==--ActiveX控件报错大家来看看啦。测试容器报错(类型)。用IE浏览器看就抱错关闭。
- 一条sql语句
- 我想给程序加一个进程条,来显示数据生成的进度,可是以前从来没有做过进程条,能否给点指教。
- 关于图片打印求助,搞分数
- 《VC++数字图像处理》中HDIB的问题??
- Visual Assist 安装使用问题
- 请问如何在SDK程序中调用MFC的类?
- 到底怎么处理VC异常呀?我用try catch用debug方式错误对话框照弹不误用release干脆出错退出
typedef struct
{
DWORD aaa[2];
DWORD bbb[2];
}sa, *psa;
应该是堆栈溢出,如果在程序里多次重入引起死循环,会用尽堆栈的内存,最后剩些内存碎片,会造成new失败...
但是,我得到的结果是死循环,没有报告错误
Windows98,VC++ 6.0,默认设置
{
// CreateThread(NULL, 0, ct, NULL, 0, NULL); // 将它去掉
while (1)
{
psa zzz = new sa;
delete zzz;
}
return
但
CreateThread(NULL, 0, ct, NULL, 0, NULL);
失败了
CreateThread(NULL, 0, ct, NULL, 0, NULL); win9x:
DWORD dwThreadID;
CreateThread(NULL, 0, ct, NULL, 0, &dwThreadID);
用
CreateThread(NULL, 0, ct, NULL, 0, &dwThreadID);
出错了.
是
CreateThread(NULL, 0, ct, NULL, 0, &dwThreadID);
导致的错误.
我刚在VC上做了测试,发现了问题的所在:
工程设置里面,C/C++,Category的Code Generation的Use runtime library选项
有单线程和多线程的设置,Console程序的缺省是单线程,运行你的程序,就会出错。
改成多线程,就没事儿了。C++的new 和 delete是要靠运行库来支持的,VC的运行库是分单线程和多线程的,这应该就是问题所在了:)平常写Consle程序的时候,别忘了缺省设置是单线程,必要时要改过来:)