高手们帮帮忙:系统资源严重不足!

one_add_one 2001-06-20 08:54:00
我编了一个程序,每运行一次,系统资源就减少一点!

运行几次后系统资源从98%降为10%,WINDOWS出现警告!

不得不从新启动计算机!

这是为什么呀?

是什么引起的?

不知道是不是我在程序里面定义了很多全局变量,能帮帮我吗?
...全文
250 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
one_add_one 2001-06-21
  • 打赏
  • 举报
回复
太感谢大家了!

我的问题解决了!

      谢     谢
 谢   谢  谢   谢
  谢 谢谢谢谢谢谢  谢
  谢 谢   谢   谢
    谢谢谢谢谢   谢
    谢   谢谢谢谢谢谢谢
谢谢谢 谢谢谢谢谢   谢
  谢 谢   谢   谢
  谢 谢   谢谢  谢
  谢谢谢谢谢谢谢 谢 谢
  谢    谢谢 谢 谢
  谢 谢 谢 谢   谢
  谢谢 谢  谢   谢
  谢 谢   谢   谢
   谢  谢 谢 谢 谢
       谢   谢

      谢     谢
 谢   谢  谢   谢
  谢 谢谢谢谢谢谢  谢
  谢 谢   谢   谢
    谢谢谢谢谢   谢
    谢   谢谢谢谢谢谢谢
谢谢谢 谢谢谢谢谢   谢
  谢 谢   谢   谢
  谢 谢   谢谢  谢
  谢谢谢谢谢谢谢 谢 谢
  谢    谢谢 谢 谢
  谢 谢 谢 谢   谢
  谢谢 谢  谢   谢
  谢 谢   谢   谢
   谢  谢 谢 谢 谢
       谢   谢


HuWenjin 2001-06-20
  • 打赏
  • 举报
回复
void CTempDlg::Start()
{
HWND hwnd = NULL;
HDC hdc = NULL;
hwnd = ::GetDesktopWindow();
if( hwnd )
{
hdc = ::GetWindowDC(hwnd);
if( hdc )
ReleaseDC(hdc);
}
}


// Just Test

littleme741 2001-06-20
  • 打赏
  • 举报
回复
呵呵。你说的对。那结果怎么样。系统资源是否还是100%? 不过既然你用了死循环,CPU肯定会100%。
kenny_yuan 2001-06-20
  • 打赏
  • 举报
回复
在Start中要使用这样一个函数:
int ReleaseDC(
HWND hWnd, // handle to window
HDC hDC // handle to DC
);
而Window的Handle则不用Close。
one_add_one 2001-06-20
  • 打赏
  • 举报
回复


HWND hwnd
HDC hdc

定义成全局变量

可以吗?
littleme741 2001-06-20
  • 打赏
  • 举报
回复
类似
Start()
{
....

CloseHandle(hDC);
CloseHandle(hWnd);

}
littleme741 2001-06-20
  • 打赏
  • 举报
回复
在Start() 调用完成后
closehandle hwnd和hdc再试验一下。

one_add_one 2001-06-20
  • 打赏
  • 举报
回复
这个问题很急的,大家能帮帮我吗?不管对不对,我都试一试!

谢谢!
one_add_one 2001-06-20
  • 打赏
  • 举报
回复
我把程序简化到只有以下东西,
最终我确定是这个在减少系统资源:

void CTempDlg::OnOK()
{
while (1==1)
{
Start();
}
}

void CTempDlg::Start()
{
HWND hwnd=::GetDesktopWindow();
HDC hdc=::GetWindowDC(hwnd);

}


请问高手们,为什么,我该怎么办?

谢谢!
cqa 2001-06-20
  • 打赏
  • 举报
回复
GetDC 后有没有
ReleaseDC,DeleteDC?

次序:
CGdi gdiNew;
oldGdi =SelectObject(newGdi)
SelectObject(oldGdi)
DeleteObject(newGdi)
HuWenjin 2001-06-20
  • 打赏
  • 举报
回复
系统的资源减少,却没有发现,一般只有一种情况:

在删除GDI资源时,它还在DC中选用!
永远都不要忘了使用完GDI后 SelectObject(OldGDI);
one_add_one 2001-06-20
  • 打赏
  • 举报
回复
还有:
this->ShowWindow(SW_SHOWMINIMIZED);
HWND hwnd1=::FindWindow(NULL,"程序一");
if (!hwnd1)
{
m_PosX=550;
hwnd1=::FindWindow(NULL,"程序二");
if (!hwnd1)
{
this->ShowWindow(SW_RESTORE);
AfxMessageBox("请先运行那个程序!");
return;
}
}
::SetForegroundWindow(hwnd1);
::ShowWindow(hwnd1,SW_MAXIMIZE);
Sleep(500);
allisone 2001-06-20
  • 打赏
  • 举报
回复
看不出来呀
littleme741 2001-06-20
  • 打赏
  • 举报
回复
不是这段代码,把其他的帖出来。
one_add_one 2001-06-20
  • 打赏
  • 举报
回复
我的程序里面有这段代码:
HWND hwnd=::GetDesktopWindow();
HDC hdc=::GetWindowDC(hwnd);
for(int i=1;i<=20;i++)
for(int j=1;j<=10;j++)
m_Broad[i][j]=GetPixel(hdc,m_PosX+j*16-8,m_PosY+i*16-8);

是不是这段代码引起的?

请问怎样释放?

谢谢大家!

我加分!
rabbitzju 2001-06-20
  • 打赏
  • 举报
回复
用BoundsChecker检查检查好了。
:)
sundayboys 2001-06-20
  • 打赏
  • 举报
回复
啊,一定是你有资源没有释放。
kenny_yuan 2001-06-20
  • 打赏
  • 举报
回复
是不是你的GDI对象从来只申请不释放?
特别注意在循环中创建的语句。

我编过一个不断地创造画刷的程序,
可以将系统资源耗尽,
系统菜单弹出来有整个屏幕那么长...
★ 从零开始,轻松掌握期货回测技能★ 保障策略安全,本地化数据读取,无需联网★ 可视化回测报告,轻松策略分析与改进★ 创新异步架构,让回测策略与实盘一致,直接上线交易★ 逐行代码详解,精通Python期货回测系统的开发★ 同时回测多种品种,高效缩短回测时间★ 利用本地信息与回调函数,实现登录、查询等功能★ 借助本地历史数据,按时间排序,实现数据回溯★ 加入配套社群,与同好共同进步这个期货实战课程将帮助你从零开始,轻松掌握期货回测技能。通过本地化数据读取,你可以保障策略的安全性而无需联网。我们采用创新的异步架构,使回测策略与实盘交易保持一致,让你能够直接上线交易。我们还为你提供可视化回测报告的功能,让你能够轻松进行策略分析与改进。通过直观的图表和指标展示,你可以深入了解策略的表现,并做出相应的优化调整。无论是收益曲线、风险指标还是交易统计,一目了然。这将极大地方便你在回测过程中进行决策,提升策略的稳定性和盈利能力。每行代码都将被仔细解释,让你精通Python语言下的期货回测系统开发。同时,你还可以同时回测多种品种,大大缩短回测时间。通过读取本地信息和调用回调函数,你将能够实现登录、查询等功能。利用本地历史数据并按时间排序,你可以进行数据回溯。加入我们的配套社群,与其他学员们一起进步吧!这个课程将成为你成为期货回测系统高手的关键! 

2,586

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧