• 5325阅读
  • 4回复

请教一个小问题,学习下哈 [复制链接]

上一主题 下一主题
离线122dddfg
 
只看楼主 正序阅读 楼主  发表于: 2011-03-19
有一个方法是这样写的:
void a()
{ char *b;
    b = new char[10000000];
    p = b;//p是成员变量
    //delete b ;///问题在此,(1)
   //b = NULL;
}
当我用for循环一万次这个方法的时候有个速度问题啊,
如果按照上面的写法来运行的话是很慢的,内存剧增;但如果填上delete 这两句的话速度会超快;这是怎么搞的呢?可以解释一下不?
离线122dddfg
只看该作者 4楼 发表于: 2011-03-20
回 3楼(wxj120bw) 的帖子
哦 豁然明了
离线wxj120bw

只看该作者 3楼 发表于: 2011-03-20
系统每个进程的堆栈大小都是固定的,你在for循环一万次,而每次函数里,你都是从堆里分配10000000字节的内存,如果每次都不从堆里释放这块内存,导致最后没有内存分配,导致系统越来越慢,反之,就越来越快了。
离线122dddfg
只看该作者 2楼 发表于: 2011-03-19
回 1楼(jdwx) 的帖子
知道有内存的泄露,就是在测试堆释放的时候无意中写的;
离线jdwx

只看该作者 1楼 发表于: 2011-03-19
你要写这段代码做什么?你在制造内存泄漏。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
快速回复
限100 字节
 
上一个 下一个