怎样获取系统内存大小?

yxzxs 2003-05-23 12:49:11
怎样获取系统内存大小?
...全文
68 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanren_me 2003-05-23
  • 打赏
  • 举报
回复
TMemoryManager* mmNew;

TMemoryManager* mmOld;

int iGetMemCount, iFreeMemCount, iReallocMemCount;

Pointer __fastcall NewGetMem(int iSize);
int __fastcall NewFreeMem(Pointer p);
Pointer __fastcall NewReallocMem(Pointer p, int iSize);

__fastcall TForm1::TForm1(TComponent* Owner): TForm(Owner)
{
mmNew = new TMemoryManager();
mmOld = new TMemoryManager();

mmNew->GetMem = NewGetMem;

mmNew->FreeMem = NewFreeMem;
mmNew->ReallocMem = NewReallocMem;

GetMemoryManager(*mmOld);

SetMemoryManager(*mmNew);
}

__fastcall TForm1::~TForm1()
{
delete mmNew;
delete mmOld;
}

Pointer __fastcall NewGetMem(int iSize)
{
iGetMemCount++;
return mmOld->GetMem(iSize);
}

int __fastcall NewFreeMem(Pointer p)
{
iFreeMemCount++;
return mmOld->FreeMem(p);
}

Pointer __fastcall NewReallocMem(Pointer p, int iSize)
{
iReallocMemCount++;
return mmOld->ReallocMem(p, iSize);

}
halibut 2003-05-23
  • 打赏
  • 举报
回复
API:
GlobalMemoryStatus()
神医CL 2003-05-23
  • 打赏
  • 举报
回复

procedure TForm1.Button1Click(Sender: TObject);
var
MemInfo: MEMORYSTATUS;
begin
MemInfo.dwLength:=sizeof(MEMORYSTATUS);
// 获取内存信息
GlobalMemoryStatus(MemInfo);
Edit1.Text:= IntToStr(MemInfo.dwMemoryLoad)+'%的内存在使用';
Edit2.Text:= '物理内存共有'+IntToStr(MemInfo.dwTotalPhys)+'字节';
Edit3.Text:= '未使用的物理内存有'+IntToStr(MemInfo.dwAvailPhys)+'字节';
Edit4.Text:= '交换文件的大小为'+IntToStr(MemInfo.dwTotalPageFile)+'字节';
Edit5.Text:= '未使用的交换文件大小为'+IntToStr(MemInfo.dwAvailPageFile)+'字节';
Edit6.Text:= '虚拟内存空间大小为'+IntToStr(MemInfo.dwTotalVirtual)+'字节';
Edit7.Text:= '未使用的虚拟内存大小为'+IntToStr(MemInfo.dwAvailVirtual)+'字节';
end;
 本课程的主题是: 透析Linux系统编程    不同于市面上的课程,只会把核心主题放到函数的讲解,本课程的核心主题是 Linux系统编程的经验总结 ;    当你在系统编程中,调用一个系统调用来解决问题时,是否考虑过 该系统调用是否会对系统性能带来影响?是否还有最优的方式?    当你在系统编程过程中,遇到问题,是否只是检查代码逻辑,而不会去深入底层去查找问题 ?    本课程将一一解决系统编程带给你的难点,疑点?    比如控制文件IO章节,给出系统文件操作的默认行为,应用中如何修改这些行为,给出文件IO操作的最优方式;   比如系统调用,给出系统调用原理;系统调用的正确使用方式等   比如进程实现,结合底层,对比线程,深入理解两者;给出进程使用经验总结;   比如线程同步,不仅引出互斥锁 条件变量 自旋锁 读写锁使用方式,同时给出各个机制的应用场景 ;   比如 进程间通信,引出各个进程间通信的机制原理,给出各个进程间通信的应用场景;   比如 信号,给出信号在进程中信号处理处理函数的正确使用方式,给出在多线程中信号处理的正确方式;   比如 共享库,给出共享库的实现机制,给出共享库的正确使用方式;   同时 会讲解 系统安全问题 ; 可执行程序的静态布局和动态布局 ;灵活使用内存映射和虚拟内存;系统事件跟踪;   给出程序性能的调优思路;    丰富的项目实例讲解 ,提供宝贵的商业项目开发经验 ; 

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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