读入内存是你自己写的,当然也可以让一个对象自己读进来,读写的底层过程是用createfile打开,然后用readfile来读取数据到你自己指定的内存存储区,然后你可以在把它写到其他地方,需要你在其它地方在创建一个文件仍然是createfile,然后用writefile写入就行。。。。我说的是windows API实现,任何被封装的类都需要靠这种方法。。。。但对于C++可以使用iostream这样的类,但他们也是在使用createfile 这写API函数。。。至于MFC我并不会用,但底层的方法他还是支持的,就这3个函数就行, createfile writefile reatefile,任何语言都支持,这是windows提供的,所以需要将其连接WIN32dll连接进来,MFC怎么做我并不会,但C和C++只要写#include<windowsh>即可。。。
第一个方面,编译环境不同,用C++写的程序,经常自动带了不少dll。
第二个方面,封装带来的效应,在C里面,不用的函数就不写,但在C++里,不用的函数也经常自动生成。比如有一个矩形类,一个正方形类,后者从前者派生,如果你只用矩形类的求面积方法不用正方形类的求面积方法,正方形类这个方法也存在了。当然,还有虚函数的虚表也要额外占空间。
#include <iostream>
using namespace std;
int main()
{
cout<<"short:"<<sizeof(short)<<endl;
cout<<"char:"<<sizeof(char)<<endl;
cout<<"int:"<<sizeof(int)<<endl;
cout<<"long:"<<sizeof(long)<<endl;
cout<<"float:"<<sizeof(float)<<endl;
cout<<"double:"<<sizeof(double)<<endl;
}
有new就必须要有相应的delete啊,你
m_pMemDC=new CDC;
m_pBitmap=new CBitmap;
之后都没有delete m_pMemDC;和delete m_pBitmap;,不停地申请内存又不释放,当然一下就把内存耗光了啊
两个CreateCompatibleDC
(这叫兼容DC,以后就这么说)两个创建兼容DC的函数是不一样的,前者是API后者是DCD类的成员函数。,前者是直接创建一个当前DC的兼容DC然后返回这个创建的兼容DC。后者是先创建一个CDC,然后将这个DCD与当前DC兼容。还不懂那当我没说
是啊, 我真的想跟你说真接用SDK!
方法是有的, MFC程序默认方式下会加载一些不必要的程序库, 可在编译配置中设置,尽量减少一些不必要的!
另就是换个编译器, VC++NET 还是不错的!
有限制,你首先需要分清,物理内存和虚拟内存的概念。然后你需要知道什么是“虚空间”。
物理内存到虚拟内存的转换因不同
CPU
和 *** 作系统的不同而不同,而且机制过于复杂,不说了。
首先,不是说你的机器有
15G
的物理内存就可以分配到内存。为什么呢?
因为 *** 作系统对进程的内存管理首先是分配给进程一个“虚空间”,用户根本看不见物理内存,它所有的内存都从“虚空间”种分配。
比如
Windows
在
X86
上分配给每个进程
4G
的虚空间,这个虚空间需要软件和硬件共同实现,同样,机制过于复杂,不说了。其中
Windows
系统占用
2G,分配给用户
2G。另外
Windows
会把这个空间划分成若干个区域,malloc
的内存就来自其中的
heap
区,加入系统给你的
heap
区域是
500M,那么你只能申请总共小于
500M
的虚拟内存,而不管你的物理内存大于
500M;同样你即使只有
10M
的物理内存剩余了,一个新创建的进程照样可以分配到
500M
的虚拟空间(只要你的硬盘足够大,这个涉及到交换技术,过于复杂,不说了)。
以上就是关于MFC如何读取文件到内存,再写到磁盘全部的内容,包括:MFC如何读取文件到内存,再写到磁盘、c++ 查看程序占用内存、MFC 内存溢出问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)