首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

基础有关问题,局部变量

2012-11-03 
基础问题,局部变量一、CString sTempfor(int i0i100o++){sTemp.Format(%d,i)}二、for(int i0i100

基础问题,局部变量
一、
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中

[解决办法]
现在不是省不省内存的问题了

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

只能用第一种
[解决办法]
楼主就是想问变量的定义放在循环内会不会影响效率吧,一般用第一种
[解决办法]

探讨
一、
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中

[解决办法]
要是这样呢?

C/C++ code
一、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);}
[解决办法]
与编译器的优化有关,第2种会优化为第一种。
[解决办法]
第一种的字符串只会执行一次构造和析构,第二种会执行100次
[解决办法]
探讨

第一种的字符串只会执行一次构造和析构,第二种会执行100次

[解决办法]
与接下去代码有关,若不做任何事,我曾用tchar写过第二种,发现被编译器自动优化成1了,但是cstring的话不好说,若真如胡哥所说做多次析构的话,直接比较下就能得出。
[解决办法]
第一种速度快
变量只申请一次,for中直接使用.
[解决办法]
第一种好,快,CString申请的内存是在堆中的吧,你可以去查看CString的实现。
[解决办法]
习惯第一种。

热点排行