基础问题,局部变量

DrSmart 2012-10-12 11:34:19
一、
CString sTemp;
for(int i=0;i<100;o++)
{
sTemp.Format("%d",i);
}

二、

for(int i=0;i<100;o++)
{
CString sTemp;
sTemp.Format("%d",i);
}


这两种哪个快,哪个更省内存呢? 在VC中
...全文
252 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ginie 2012-10-16
  • 打赏
  • 举报
回复
第一种好,第二种省,而且第二种没什么意思
期盼曙光 2012-10-16
  • 打赏
  • 举报
回复
第二种再块中定义,块结束时就销毁了,在块外没什么用,为什么那么写
rxguoblp 2012-10-16
  • 打赏
  • 举报
回复
歼20说得对。
redui 2012-10-16
  • 打赏
  • 举报
回复
如果只看示例代码,其实效率差不多,不要管构造、析构执行了多少次,要看内部到底干了哪些事,虽然第二种写法构造/析构会执行100次,但是构造函数基本上不做事,而析构函数就是释放字符串内存。
第一种写法做的事情其实是一样的,每次调用Format时,先自动释放先前的字符串内存,再申请新内存。跟第二种写法相比,做的事情一样多,不同的是执行次序变化了。
fujialin2011 2012-10-16
  • 打赏
  • 举报
回复
第一种吧!节省了开辟空间的时间
谁学逆向工程 2012-10-15
  • 打赏
  • 举报
回复
我觉得第一种更快
fyzh84 2012-10-15
  • 打赏
  • 举报
回复
循环中 使用++i更快些,少一个临时变量产生
wrhjyx 2012-10-15
  • 打赏
  • 举报
回复
习惯用第一种
翅膀又硬了 2012-10-15
  • 打赏
  • 举报
回复
两年前同事告诉我用第二种。第一种好像有时候会不正常
头头 2012-10-14
  • 打赏
  • 举报
回复
肯定第一种呀,你想 定义一次 和不断定义多次 每次都要初始化 ,是不是会增加耗时
lhbobo129 2012-10-13
  • 打赏
  • 举报
回复
一般都是第一种吧~
wangzexi 2012-10-13
  • 打赏
  • 举报
回复
习惯第一种。
Dobzhansky 2012-10-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

第一种的字符串只会执行一次构造和析构,第二种会执行100次
[/Quote]
这么一来, 需要考虑 CString 内部缓冲区的实现方式, 是在栈上, 还是在自由内存.
redui 2012-10-12
  • 打赏
  • 举报
回复
第一种的字符串只会执行一次构造和析构,第二种会执行100次
schlafenhamster 2012-10-12
  • 打赏
  • 举报
回复
与编译器的优化有关,第2种会优化为第一种。
Dobzhansky 2012-10-12
  • 打赏
  • 举报
回复
要是这样呢?

一、
char buf[32];
for(int i=0;i<100;o++)
{
sprintf(buf, "%d", i);
}

二、

for(int i=0;i<100;o++)
{
char buf[32];
sprintf(buf, "%d", i);
}


qlizhang 2012-10-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
一、
CString sTemp;
for(int i=0;i<100;o++)
{
sTemp.Format("%d",i);
}

二、

for(int i=0;i<100;o++)
{
CString sTemp;
sTemp.Format("%d",i);
}


这两种哪个快,哪个更省内存呢? 在VC中
[/Quote]
我的判断
一样快,二更省。
skipsol 2012-10-12
  • 打赏
  • 举报
回复
楼主就是想问变量的定义放在循环内会不会影响效率吧,一般用第一种
傻X 2012-10-12
  • 打赏
  • 举报
回复
现在不是省不省内存的问题了

你第二种方法就没意义啊,for循环后
你STemp的生命周期就结束了。

只能用第一种
Eleven 2012-10-12
  • 打赏
  • 举报
回复
我一般写第一种~
加载更多回复(4)

16,472

社区成员

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

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

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