中易网

VC++问题,求大神.问题原因:在同一台电脑上,用的VS2008用调试运行内存正常释放,编译后可以运行,无效果.

答案:2  悬赏:60  
解决时间 2021-12-21 14:54
代码在此:这是内存释放工具
#include
#include
#include
DWORD WINAPI Threadproc(LPVOID LPARAM)
{
HANDLE hsnap;
HANDLE hprocess;
BOOL bmore;
PROCESSENTRY32 pe32;
printf("准备对进程内存释放......\n");
pe32.dwSize=sizeof(pe32);//获取快照下行代码
hsnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);//获取当前进程快照
bmore=Process32First(hsnap,&pe32);
while(bmore)//条件不用打:
{
hprocess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pe32.th32ProcessID);//这好像是打开一个进程,以后过驱动会经常用到.
SetProcessWorkingSetSize(hprocess,-1,-1);//这是释放内存.本程序的主角哦
CloseHandle(hprocess);//这是关闭句柄所在的进程
bmore=Process32Next(hsnap,&pe32);//这是查找下一进程
}
CloseHandle(hsnap);//这个我不解释了仔细看上面的代码
int p;
for (int i=1; i<4; i++)
{
p=4-i;
printf("还有%d秒关闭窗口 \n",p);
Sleep(1000);
}
printf("优化完毕");
Sleep(1000);
return 0;

}
///以上是一个子程序,需要在线程里调用的子程序,我是这样理解的.如果理解有错误以后更正
void main()
{
DWORD Threadid;
HANDLE hthread;
printf("开始优化..........\n");
hthread=CreateThread(NULL,NULL,Threadproc,NULL,NULL,&Threadid);//创建线程
WaitForSingleObject(hthread,INFINITE);//等待线程关闭
}
最佳答案
直接运行是Debug还是Release版的?和你调试的版本一样?我怀疑是权限问题。

不能调试的时候,记日志就可以了,判断OpenProcess、SetProcessWorkingSetSize这些的返回值,不对的时候printf出来就是了啊。
全部回答
你查询一下提升用户权限的代码 再看看别人怎么说的。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我想打造一个微餐饮品牌,可是完全没有思路啊
2015年山东省高考报志愿自主招生院校是不是要
追求自由跟生命互动让年轻的心在颤动这首歌叫
请问:电脑桌面视频怎么录制?
0.09立方米=()升
机械设计制造及其自动化考机械电子工程算不算
对方说你这身材撞不飞怎么回复
ikea验厂怎么咨询
经不起开玩笑的男朋友,他是爱你的吗
天天酷跑神气牛牛要装备才能触发技能?
数学符号°和文字的间隙太宽怎么弄
智能手环算不算家电
成吉思汗3特权码ZQAT6RR6GCCF领取新手礼包!
美好梦想安全起步征文
我是艺术生过了武体的校考要多少文化成绩啊
推荐资讯
颓流的意思是什么?颓流的释义是什么啊?
素位的意思是什么?素位的释义是什么啊?
遮簇的意思是什么啊?请解释下!
有谁知道天外天休闲会所?
苹果VoiceOver开了之后,手机反应速度奇慢
结婚当天新娘化妆
撄宁的意思是什么啊?请解释下!
怖懅的意思是什么?怖懅的释义是什么啊?
我用矿泉水泡狗粮给两个月大的比熊吃可以吗
野役的意思是什么啊?请解释下!
请问大家,平时喝水用那种材料的杯子最好,玻
把话的意思是什么?把话的释义是什么啊?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?