那谁的技术博客
感兴趣领域:高性能服务器编程,存储,算法,Linux内核
随笔 - 210, 文章 - 0, 评论 - 1183, 引用 - 0
数据加载中……
(C++)一个愚蠢的错误
#include
<
string
.h
>
#include
<
string
>
using
namespace
std;
typedef
struct
Test
{
string
name;
int
a;
}Test;
int
main()
{
Test tTest;
memset(
&
tTest,
0
,
sizeof
(Test));
return
0
;
}
立此为据,长点记性.
posted on 2008-06-06 21:30
那谁
阅读(4863)
评论(23)
编辑
收藏
引用
所属分类:
C\C++
评论
#
re: (C++)一个愚蠢的错误
回复
更多评论
#include <string.h>
#include <string>
很有才
2008-06-06 21:44 |
罗宾李
#
re: (C++)一个愚蠢的错误[未登录]
回复
更多评论
晕倒
chinaunix上的是你哦,我是voipexplore。string内存布局不透明,只能用new类,不能用malloc类。
另楼上 包含string.h 是为了用memset
2008-06-06 22:00 |
CppExplore
#
re: (C++)一个愚蠢的错误
回复
更多评论
@罗宾李
string.h是C中的函数,使用memset的头文件,string就不必说了吧?我还不至于犯string和string.h不分的错误.
2008-06-06 22:17 |
创
#
re: (C++)一个愚蠢的错误
回复
更多评论
@CppExplore
以后注意兄弟的ID了:)
2008-06-06 22:22 |
创
#
re: (C++)一个愚蠢的错误
回复
更多评论
C++里的结构就是类,不可以memset哦
2008-06-07 00:56 |
晕
#
re: (C++)一个愚蠢的错误
回复
更多评论
错误就是 memset( ...string ) ?
有点巧,我同事也犯过这个错。:D
2008-06-07 09:27 |
Kevin Lynx
#
re: (C++)一个愚蠢的错误[未登录]
回复
更多评论
长知识了。
2008-06-07 13:25 |
ron
#
re: (C++)一个愚蠢的错误
回复
更多评论
能否请楼主详细解说一下错误?
2008-06-07 15:01 |
kam
#
re: (C++)一个愚蠢的错误
回复
更多评论
可以正常执行啊!可以解释一下么?谢谢!!
2008-06-07 20:24 |
林茂
#
re: (C++)一个愚蠢的错误[未登录]
回复
更多评论
楼上的,C++里结构就是类,而不是原生的C结构。用memset会把类里的一些必要数据也清零。比如如果类有虚函数,则就有虚表指针,你用memset会把虚函数表指针置为0,这样你的类还有多态吗,你的程序还是健壮的吗
2008-06-07 22:51 |
christanxw
#
re: (C++)一个愚蠢的错误
回复
更多评论
#include <cstring>
#include <string>
2008-06-09 18:05 |
Wang Feng
#
re: (C++)一个愚蠢的错误
回复
更多评论
@christanxw
thanks for explanation
2008-06-09 18:22 |
林茂
#
re: (C++)一个愚蠢的错误
回复
更多评论
OK, mark 下
2008-06-10 10:21 |
零宇
#
re: (C++)一个愚蠢的错误[未登录]
回复
更多评论
......我也这么做过。。。。
2008-06-12 19:28 |
杨粼波
#
re: (C++)一个愚蠢的错误[未登录]
回复
更多评论
@创
“C++对我而言就是有STL带class能处理多态,继承的C. ”
最初的C++大体是这样,除了STL。
然而,现在还这么想的话,犯下这个错误是必然——C++的对象模型远不止C那么简单,背后有很多事情需要注意的。甚至,有时候构造函数是否为inline就决定了代码是否为二进制兼容。
2008-06-15 19:53 |
raof01
#
re: (C++)一个愚蠢的错误
回复
更多评论
看完后,吓出一身汗,对内存对象模型的理解实在不够深入。
2008-06-15 23:30 |
alexandercer
#
re: (C++)一个愚蠢的错误
回复
更多评论
不能把一个string型的对象memset了。俺对CString对象做过相同的操作,结果,自然所崩溃了。
2008-06-19 16:30 |
abettor
#
re: (C++)一个愚蠢的错误
回复
更多评论
我只学过C++ 没用过这样的用法,有构造函数为什么还要如此呢
2008-07-02 20:13 |
foxtail
#
re: (C++)一个愚蠢的错误
回复
更多评论
这种错误,我一般不会犯。
因为结构体里我绝对不会放类对象,我只会放基本类型数据,
如果有类对象,我一定会放在类里,如果是用到类,一定会把memset要不放在构造函数里,要不就放在成员函数里
2008-10-13 15:53 |
x
#
re: (C++)一个愚蠢的错误
回复
更多评论
学习了。
2009-09-24 19:41 |
kiven
#
re: (C++)一个愚蠢的错误
回复
更多评论
额..struct里头的string不能按字节memset吧。。。
2010-01-26 00:10 |
qiuxiafei
#
re: (C++)一个愚蠢的错误
回复
更多评论
不错,学习了
2010-02-10 18:51 |
wantukang
#
re: (C++)一个愚蠢的错误
回复
更多评论
不过是个惯性问题
2010-09-01 09:30 |
lcm
刷新评论列表
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
C++的流设计很糟糕
解读google C++ code style谈对C++的理解
Callback在C\C++中的实现
自己实现的memcpy
服务器公共库开发--线程安全的singleton类, 可配置的线程锁管理类
服务器公共库开发--读取ini文件格式的类
如何使用位操作得到大于N且为2的次方的最小的数
(C++)一个愚蠢的错误
研究了一下SGI STL的内存算法
memcache内存池的设计原理
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
Powered by:
C++博客
Copyright © 那谁
导航
C++博客
首页
联系
聚合
管理
<
2008年8月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
公告
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(71)
给我留言
查看公开留言
查看私人留言
随笔分类
(264)
avidya(1)
(rss)
C\C++(21)
(rss)
ccache(8)
(rss)
CGL(5)
(rss)
eventrpc(1)
(rss)
gdb(2)
(rss)
libevent(2)
(rss)
lighttpd(10)
(rss)
linux kernel(7)
(rss)
Linux/Unix(32)
(rss)
memcached(2)
(rss)
mktags(4)
(rss)
Nginx(5)
(rss)
Perl(3)
(rss)
tokyo cabinet(5)
(rss)
操作系统(1)
(rss)
读书笔记(3)
(rss)
服务器设计(42)
(rss)
脚本语言(1)
(rss)
经验教训(4)
(rss)
其他(10)
(rss)
设计模式(24)
(rss)
算法与数据结构(48)
(rss)
图形学(1)
(rss)
网络编程(22)
(rss)
随笔档案
(210)
2010年8月 (1)
2010年7月 (3)
2010年6月 (2)
2010年5月 (1)
2010年4月 (2)
2010年3月 (1)
2010年1月 (5)
2009年12月 (7)
2009年11月 (3)
2009年10月 (7)
2009年9月 (2)
2009年8月 (2)
2009年7月 (1)
2009年6月 (3)
2009年5月 (2)
2009年4月 (7)
2009年3月 (2)
2009年2月 (2)
2009年1月 (5)
2008年12月 (1)
2008年11月 (2)
2008年10月 (6)
2008年9月 (12)
2008年8月 (11)
2008年7月 (5)
2008年6月 (2)
2008年4月 (3)
2008年3月 (3)
2008年2月 (1)
2008年1月 (1)
2007年12月 (3)
2007年11月 (3)
2007年8月 (1)
2007年7月 (2)
2007年6月 (2)
2007年5月 (9)
2007年4月 (1)
2007年3月 (8)
2007年2月 (3)
2007年1月 (5)
2006年12月 (4)
2006年11月 (3)
2006年10月 (5)
2006年9月 (4)
2006年8月 (13)
2006年7月 (28)
2006年4月 (1)
2006年3月 (4)
2006年2月 (4)
2006年1月 (1)
2005年12月 (1)
相册
ccache
lighttpd
tokyo cabinet
文件
关于我
我的google reader share
我的google reader share
开源项目
libevent
lighttpd
memcached
PCRE for Windows (Win32)
sqlite
STLFilt
论坛
ChinaUnix
OldLinux
朋友
cugb_cat
Edengundam
win_hate
ypxing
老罗
搜索
最新评论
1. re: memcached采用的网络模型
很好的文章,值得分享。
--纽约网站设计
2. re: 常见设计模式的解析和实现(C++)文档及源码打包下载
评论内容较长,点击标题查看
--残阳丛林
3. re: libevent事件处理框架分析
@hailong
拿走后,堆的恢复是logn
--jiao
4. re: 从半同步-半异步模式谈服务器的设计
学习服务器的一些代码模式。
--王小亮
5. re: 让libevent支持多线程
刚开始以为有个新的方法可以实现多线程。。。。其实就试类似pipe的方式, memcache就是这样做的,可以参考一下
--fly2010love
阅读排行榜
1. 同步/异步与阻塞/非阻塞的区别(53052)
2. libevent事件处理框架分析(45219)
3. epoll学习笔记(41124)
4. 解读google C++ code style谈对C++的理解(38118)
5. 集成libevent,google protobuf的RPC框架(27421)
6. 常见设计模式的解析和实现(C++)文档及源码打包下载(24036)
7. 让libevent支持多线程(23586)
8. 一个关于临时对象和虚拟析构函数的问题(22307)
9. epoll为什么这么快(20249)
10. 二叉树遍历算法集合(前中后序遍历的递归和非递归算法,层序遍历算法)(20231)
11. Callback在C\C++中的实现(20058)
12. 二分查找算法(迭代和递归版本)(18307)
13. 谈目前项目组的代码提交制度(17882)
14. Linux下面的线程锁,条件变量以及信号量的使用(15660)
15. C++的流设计很糟糕(14674)
16. 二分查找学习札记(14276)
17. memcached采用的网络模型(13925)
18. 红黑树的实现源码(第二次修订版)(13656)
19. 多进程服务器中,epoll的创建应该在创建子进程之后(12684)
20. 第一个socket程序-C\S模式的文件传输程序(12242)
21. 使用tolua++创建基于C\C++语言的lua脚本(12051)
22. 博客迁移(11612)
23. 从半同步-半异步模式谈服务器的设计(11573)
24. Lighty与Nginx的比较分析(11551)
25. Btree算法实现代码(11543)
26. 向德国人低头(11454)
27. epoll相关资料整理(11273)
28. 把二分查找算法写正确需要注意的地方(11138)
29. 程序设计经验总结(10219)
30. 我的项目Makefile文件模板(10155)
31. 带超时机制的DNS解析API(9519)
32. 方法与工具(9377)
33. 自己设想的一个IM服务器的架构(9180)
评论排行榜
1. 常见设计模式的解析和实现(C++)文档及源码打包下载(90)