MFC如何读取文件到内存,再写到磁盘

MFC如何读取文件到内存,再写到磁盘,第1张

读入内存是你自己写的,当然也可以让一个对象自己读进来,读写的底层过程是用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 内存溢出问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/9754170.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存