#include <string.h>
#include 
<string>
using namespace std;

typedef 
struct Test
{
    
string name;
    
int    a;
}Test;

int main()
{
    Test tTest;
    memset(
&tTest, 0sizeof(Test));

    
return 0;
}

立此为据,长点记性.


posted on 2008-06-06 21:30 阅读(2095) 评论(18)  编辑 收藏 引用 所属分类: C\C++
Comments
  • # re: (C++)一个愚蠢的错误
    罗宾李
    Posted @ 2008-06-06 21:44
    #include <string.h>
    #include <string>
    很有才  回复  更多评论   
  • # re: (C++)一个愚蠢的错误[未登录]
    CppExplore
    Posted @ 2008-06-06 22:00
    晕倒
    chinaunix上的是你哦,我是voipexplore。string内存布局不透明,只能用new类,不能用malloc类。
    另楼上 包含string.h 是为了用memset  回复  更多评论   
  • # re: (C++)一个愚蠢的错误

    Posted @ 2008-06-06 22:17
    @罗宾李
    string.h是C中的函数,使用memset的头文件,string就不必说了吧?我还不至于犯string和string.h不分的错误.
      回复  更多评论   
  • # re: (C++)一个愚蠢的错误

    Posted @ 2008-06-06 22:22
    @CppExplore

    以后注意兄弟的ID了:)
      回复  更多评论   
  • # re: (C++)一个愚蠢的错误

    Posted @ 2008-06-07 00:56
    C++里的结构就是类,不可以memset哦  回复  更多评论   
  • # re: (C++)一个愚蠢的错误
    Kevin Lynx
    Posted @ 2008-06-07 09:27
    错误就是 memset( ...string ) ?

    有点巧,我同事也犯过这个错。:D  回复  更多评论   
  • # re: (C++)一个愚蠢的错误[未登录]
    ron
    Posted @ 2008-06-07 13:25
    长知识了。  回复  更多评论   
  • # re: (C++)一个愚蠢的错误
    kam
    Posted @ 2008-06-07 15:01
    能否请楼主详细解说一下错误?  回复  更多评论   
  • # re: (C++)一个愚蠢的错误
    林茂
    Posted @ 2008-06-07 20:24
    可以正常执行啊!可以解释一下么?谢谢!!  回复  更多评论   
  • # re: (C++)一个愚蠢的错误[未登录]
    christanxw
    Posted @ 2008-06-07 22:51
    楼上的,C++里结构就是类,而不是原生的C结构。用memset会把类里的一些必要数据也清零。比如如果类有虚函数,则就有虚表指针,你用memset会把虚函数表指针置为0,这样你的类还有多态吗,你的程序还是健壮的吗  回复  更多评论   
  • # re: (C++)一个愚蠢的错误
    Wang Feng
    Posted @ 2008-06-09 18:05
    #include <cstring>
    #include <string>  回复  更多评论   
  • # re: (C++)一个愚蠢的错误
    林茂
    Posted @ 2008-06-09 18:22
    @christanxw
    thanks for explanation  回复  更多评论   
  • # re: (C++)一个愚蠢的错误
    零宇
    Posted @ 2008-06-10 10:21
    OK, mark 下  回复  更多评论   
  • # re: (C++)一个愚蠢的错误[未登录]
    杨粼波
    Posted @ 2008-06-12 19:28
    ......我也这么做过。。。。  回复  更多评论   
  • # re: (C++)一个愚蠢的错误[未登录]
    raof01
    Posted @ 2008-06-15 19:53
    @创
    “C++对我而言就是有STL带class能处理多态,继承的C. ”
    最初的C++大体是这样,除了STL。
    然而,现在还这么想的话,犯下这个错误是必然——C++的对象模型远不止C那么简单,背后有很多事情需要注意的。甚至,有时候构造函数是否为inline就决定了代码是否为二进制兼容。  回复  更多评论   
  • # re: (C++)一个愚蠢的错误
    alexandercer
    Posted @ 2008-06-15 23:30
    看完后,吓出一身汗,对内存对象模型的理解实在不够深入。  回复  更多评论   
  • # re: (C++)一个愚蠢的错误
    abettor
    Posted @ 2008-06-19 16:30
    不能把一个string型的对象memset了。俺对CString对象做过相同的操作,结果,自然所崩溃了。  回复  更多评论   
  • # re: (C++)一个愚蠢的错误
    foxtail
    Posted @ 2008-07-02 20:13
    我只学过C++ 没用过这样的用法,有构造函数为什么还要如此呢  回复  更多评论   

标题  
姓名  
主页
验证码 *
内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
[使用Ctrl+Enter键可以直接提交]
相关链接:
网站导航: