mfc 在框架frame的OnCreate里面最多能创建多少个对象???

w7053698 2017-03-10 10:46:02
现在遇到个问题,创建了个类继承自CWnd,打算在单文档的frame的OnCreate里面创建一万个这个类的对象 如果创建数量小的话没问题编译通过也能生成正常运行, 但是一旦创建的数量超过几千个后就会提示 创建空文档失败 这是为什么了 我是个初学者 麻烦哪位大神给帮忙出个解决办法 是不是哪里的缓存默认设置小了?
最后再问一下 在frame的OnCreate里面 最大能创建多少个对象了 ?
...全文
160 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
w7053698 2017-03-11
  • 打赏
  • 举报
回复
谢谢各位的回答了 程序运行时内训使用达到了2G多了 看来还是我算法的问题 只能优化一下了
w7053698 2017-03-10
  • 打赏
  • 举报
回复
谢谢大家的回复 我这一万个CWnd对象是要在程序运行的过程中 实时的采集数据 不需要显示 所以不可能随意销毁 因为每个对象都要接收自定义消息 所以也只能继承自CWnd 倒是 我试过 如果单单创建个类不继承任何类的话 创建上千个倒是没问题 但问题是 还要接收消息 ,不知道 创建的每一个CWnd对象不加载菜单 行不行了?
赵4老师 2017-03-10
  • 打赏
  • 举报
回复
在现实世界中,除时间和空间可能是无限的以外,其它任何事物都是有限的。
kakabulusi 2017-03-10
  • 打赏
  • 举报
回复
提示创建空文档失败,应该是创建对象时间过长,或者某些资源耗尽, 导致框架类下面的文档类创建或者初始化(请求不到必须的资源)失败造成的。
worldy 2017-03-10
  • 打赏
  • 举报
回复
依赖于你的可用的内存大小,数量不定;另外,几万个的CWnd,你要摆在哪里?
kakabulusi 2017-03-10
  • 打赏
  • 举报
回复
一般不在oncreate里面创建对象,而是在使用时创建,用完后销毁。 oncreate函数是在类产生时候进行的一些初始化工作。 在oncreate里面创建对象后,对应的需要在ondestroy里面进行对象的销毁操作(还要看对象是属于框架还是属于视类还是文档类,具体情况具体分析)。 在oncreate对象里面创建的对象生命周期与自身的生命周期相同,你创建的对象会长期滞留内存,导致可用内存空间不足。 如果确实有必要这么做,可以在 precreatewindow函数里面做,这个函数是对象创建完成后 窗口出现之前运行的一个虚函数,
xiaohuh421 2017-03-10
  • 打赏
  • 举报
回复
要看你的类对象占用空间的大小, 还有类对象是在栈上分配, 还是堆上分配的. 一般栈默认空间只有1M左右. 而堆决定于可用内存的大小.

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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