随笔 - 530, 文章 - 0, 评论 - 921, 引用 - 0
数据加载中……

string和memset

有些东西可能很简单,我们大家不留意。

string大家都在用,string可以用memset吗?

我们先来看看代码
void fun()
{
    
string temp;
    
char buff[] = "123456789";
    
while(true)
    
{
        
        memset(
&temp, '\0'sizeof(string));
        temp 
= buff;
    }

}

这段代码有问题吗?
如果你觉得没有问题,运行下?
如果有问题,请讲明原因?

题目很简单,却很值得思考。

代码中的while循环是为了扩大执行后的效果,引起大家的注意。

posted on 2008-09-23 22:10 AlanTop 阅读(2315) 评论(7)  编辑 收藏 引用 所属分类: C++

评论

# re: string和memset  回复  更多评论   

任何类都不能用memset, 一旦暴力,就等于你强奸了她的内部数据,她已经崩溃了
2008-09-23 22:41 | 内容

# re: string和memset  回复  更多评论   

memset大多适用于POD类型
2008-09-24 00:07 | 万连文

# re: string和memset  回复  更多评论   

很不错的例子,明白了。能否从ida pro角度给讲解一下。顺便也是一个ida pro教程,支持alantop。
2008-09-24 01:21 | 周敏

# re: string和memset  回复  更多评论   

期待alantop的反汇编和高级调试教程。
2008-09-24 01:22 | 周敏

# re: string和memset  回复  更多评论   

这不明摆着么
2008-09-24 14:33 | 还要姓名?

# re: string和memset  回复  更多评论   

后果是内存泄露吧。
string 每次动态申请内存放string的。
2008-09-29 15:51 | wujf

# re: string和memset  回复  更多评论   

只能用temp.size()
sizeof(string )很大可能返回不到string 对象本来存储的字符个数值
sizeof(string)在一般编译器里面是32
2008-11-15 04:08 | cocohcx

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理