春风化雪的专栏

一起讨论C++/C高质量程序设计

用户操作
[即时聊天] [发私信] [加为好友]
春分化雪ID:northwest_wolf
18341次访问,排名6864(-2),好友16人,关注者41人。
northwest_wolf的文章
原创 14 篇
翻译 0 篇
转载 0 篇
评论 87 篇
最近评论
sujinzhao407:刚在Linux下用KDevelop并不存在这个问题,也就是说动态申请到内存首地址的前的第16个字节处保存的并不是申请到的空间大小,输出结果为0,而在VC下才会出现这个情况。另外qgs551提到的:
double *pmemory=(double*)(unsigned int*)((char*)a-16);

*pmemory =6.0;
应该将doub……
sujinzhao407:刚在Linux下用KDevelop并不存在这个问题,也就是说动态申请到内存首地址的前的第16个字节处保存的并不是申请到的空间大小,输出结果为0,而在VC下才会出现这个情况。另外qgs551提到的:
double *pmemory=(double*)(unsigned int*)((char*)a-16);

*pmemory =6.0;
应该将doub……
sujinzhao407:但是不明白为什么动态申请的内存大小会保存在首地址前的16个字节处,是不是和VC的编译器有关啊,期待有人能用其它编译器测试下!
sujinzhao407:经过调试,在动态内存分配后,*((unsigned int*)((char*)a - 16))的值确实已经是4344了,但如果将*pmemory = 4344就OK了,所以我觉得如果赋成6.0的话,因为申请的空间大小是4344,在delete []a时释放的地址空间大小确实6所以就会报错了,赋成4344就没有问题是因为申请分配的空间和释放时的空间大小一致!
csnffdn:不错的书,准备买一本
文章分类
收藏
    相册
    技术图片
    我的闺女
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 《高质量程序设计指南——C++/C》(第三版)最新修订收藏

    新一篇: 关于《高质量》第三版第4.13节例4的更正! | 旧一篇: 《高质量程序设计指南——C++/C》(第三版)

    1.Page 7:倒数第13行,“啰里啰唆”印刷有点儿问题;
    2.Page 15:表1-2有些许印刷问题;
    3.Page 56:“4.3 类型转换”一节上面一段末尾应从“关于复合...”处另起一行;
    4.Page 58:示例4-6,代码用下列代码替换:
     
     5.Page 76:示例4-13上半部分最后一行“delete a[];”要右移4格对齐;下半部分最后一行左移4格对齐;
    6.Page 81:示例4-20中的注释/*第三条...*/修改为/*第二条...*/;
    7.Page 82:将例4的内容整个替换为:
    例4:协助破案。假设已经查清,有A、B、C、D、E五个嫌疑人可能参与制造了一起银行抢劫案,但是不知道其中到底哪几个人是真正的案犯。不过,有确凿证据表明:
        ① 如果A参与了作案,则B一定也会参与。
        ② B和C两人中只有一人参与了作案。
        ③ C和D要么都参与了作案,要么都没有参与。
        ④ D和E两个人中至少有一人参与作案。
        ⑤ 如果E作案,则A和D一定参与作案。
    是不是有点绕口?我们可以用数理逻辑中的正规表达式来表示上述论断:
        ①   A→B
        ② (B∧ C)∨( B∧C)
        ③ (C∧D)∨( C∧ D)
        ④ (D∨E)
        ⑤   E→(A∧D)
    我们现在用1(可理解为TRUE)表示作案,0(可理解为FALSE)表示未作案,则每个人的取值范围就是{0,1}。然后我们在5个人取值的所有可能的组合空间中进行搜索,如果某个组合同时满足这5条线索,那么它就是本案的答案了。于是,上述正规表达式可以进一步表示为下列C++/C逻辑表达式:
        ① A == 0 ||(A == 1 && B == 1)
        ② B + C == 1
        ③ C == D
        ④ D + E >= 1
        ⑤ E == 0 ||(E == 1 && A == 1 && D == 1)
    我们用另一个变量count来表示组合空间中某一个组合能够满足几条论断,如果出现了这样一个组合:它同时满足了这5条论断,那么它就是我们要找的组合。程序见示例4-21。
                                                        示例4-21
     
         [注:] 这个例子的另一个更直接的解法参见文章“关于《高质量》第三版第4.13节例4的更正!”。
    8.Page 83:在“最后我们举一个数值计算...。”一行前面插入“例5:数值计算。”;
    9.Page 88:[建议5-1]中的示例代码:两个MAX和PI应该垂直对齐,后面的注释也垂直对齐;
    10.Page 91:“C++程序”所在一行中:右边的[方法二]和左边的[方法二]要水平对齐,调整后后面的[方法三]和[方法四]也要分别与左边的[方法三]和[方法四]水平对齐;
    11.Page 93:倒数第10行,将“…定义和初始化每一个常量时,一次一个样。”修改为“…定义和初始化每一个常量一次。”;
    12.Page 96:示例6-1:将“T是形参”修改为“_T是形参”;
    13.Page 107:示例6-8中,后面的注释行要垂直对齐;
    14.Page 122:示例7-1中,所有“cout <<...”行中的“:0x”要垂直对齐;
    15.Page 144:示例8-5右半边“char ch; ”一行要缩进4格垂直对齐;
    16.Page 147:上方代码中最后一个“:8”中间插入一个空格;
    17.Page 149:示例8-9中,将“sizeof(X) = 4”修改为“sizeof(X) = 8”;
    18.Page 154/155:图8-6和图8-7中m_price的长度应该是8字节而不是4字节,这是个笔误。修正后的图参见相册中的图8-6和图8-7。
    19.Page 167:第(7)条中,“#define SQUARE(x)((x)*(x))”中间要插入几个空格,即修改为“#define  SQUARE(x)    ((x)*(x))”;“#define SQUARE(x)x * x”的中间也插入几个空格,即修改为“#define SQUARE(x)     x * x”;
    20.Page 168:第(8)条中,把“否则将导致变量的多次求值”修改为“否则可能导致变量多次求值,且结果可能与预期不符,因为复合表达式中子表达式的求值顺序可能因具体编译器的不同而不同。”;
    21.Page 168:第(8)条中,把“其结果将是30而不是期望的25,这是因为展开的结果为:int x = ((n++) * (n++));”修改为“其结果可能是30,但也可能是25。”;
    22.Page 170:示例9-2中,将下列代码:
     
     
    23.Page 181:[建议10-5]中,把“\t”修改为‘\t’;
    24.Page 183:示例10-6用下面的代码替换:
     
    25.Page 193:示例12-3的代码用下面的代码替换:
     
    26.Page 196:示例12-6中,三个class所在行对齐有问题,后面两个class行要左移4空格垂直对齐;
    27.Page 199:图12-1用相册中的图12-1替换(原图没有使用斜体)。
    28.Page 200:示例12-11中,class Eye的“public:”所在行左移4格垂直对齐,同时void行向右缩进4格;同时正数第13行“...返回其中任意一个接口指针”修改为“...返回其中任意一个接口的指针”;
    29.Page 201:上方class Head的private部分以m_打头的部分要垂直对齐;
    30.Page 207:倒数第12和13行,请把“//(3)”和“// OK!”垂直对齐;
    31.Page 210:示例12-19,最后一行向左移4格垂直对齐;
    32.Page 233:上方“class B”行向左移4格垂直对齐;
    33.Page 270:把示例15-3中第8行到第13行分别左移4格;
    34.Page 275:把[建议15-1]中的“比如反跟踪”修改为“(比如反跟踪)”;
    35.Page 297:示例16-10:最后的“catch”一行向左移4格对齐;
    36.Page 301:正数第6行末尾句号改为冒号;
    37.Page 309:把“…必须派生自类似于接口IUnknown类”修改为“…必须派生自类似于接口IUnknown的类”;
    38.Page 309:将图16-1用相册中的图16-1替换。
    39.Page 310:示例16-22中间“strVect.insert(…);”、“}”和“…”所在的三行都分别右缩进4格;
    40.Page 310:将“而不是真正数据”修改为“而不是真正的数据”;将“…指针元素指向对象”修改为“…指针元素所指对象”;
    41.Page 317:最后一行末尾句号修改为冒号;
    42.Page 320:示例16-30,把“void func()”和“{”两行左移4格对齐;
    43.Page 320:示例16-31中,把最后一行右缩进4格对齐;
    44.Page 333:正数第15行末尾句号改为冒号;
    45.Page 341:倒数第9行末尾句号改为冒号;
    46.Page 343:示例17-7用下面的代码替换:
     
     
    47.Page 348:将“顾名思义”这一段第二行的“输出功能”改为“输入/输出功能”;
    48.Page 357:图17-12存在一些问题,不知道是印刷问题还是绘图有问题。修正后的图参见相册中的图17-12。
    49.附录E:“POD”所在行右边中文解释没有对齐,只需在末尾换行即可。

    发表于 @ 2007年07月23日 10:50:00|评论(loading...)|编辑

    新一篇: 关于《高质量》第三版第4.13节例4的更正! | 旧一篇: 《高质量程序设计指南——C++/C》(第三版)

    评论

    #uzone 发表于2007-07-27 17:04:09  IP: 61.183.133.*
    买来看看。

    呵呵
    #gaoqing000 发表于2007-07-29 16:02:06  IP: 218.104.96.*
    到位, 
    #gaoqing000 发表于2007-07-29 16:02:35  IP: 218.104.96.*
    请问您现在还在中兴工作吗?
    #northwest_wolf 发表于2007-07-31 16:58:32  IP: 203.86.44.*
    sorry,我以前也没有在中兴工作过。
    #xsh525 发表于2007-08-01 00:11:01  IP: 124.78.47.*
    你现在还在贝尔阿尔卡特吗?是不是经常去旁边的新金桥大厦吃饭,说不定我见过你,嘿嘿,每次要去参加笔试的时候,就看一遍你的高质量C++编程指南复习一下,不过真的感觉现在C/C++只在系统领域还把持着江山,在应用领域,都逐渐被Java .Net蚕食,学了那么多年的C++不甘心啊
    #linux_is_perfect 发表于2007-08-02 10:32:25  IP: 221.131.61.*
    以前看到,相当不错

    很多细节,学习
    #dalao812 发表于2007-08-03 17:26:08  IP: 58.49.112.*
    第三版 我买了来看 ,哎 和一年前看第二版感觉不同啊 ,哪个时候根本就没看明白 . 刚好去一家公司面试 ,还是国内一家大公司 ,出了那几个内存思考题目和strcpy()函数 ,太熟悉了.真是多谢了~~~
    ^_^
    #chb871013 发表于2007-08-06 16:32:44  IP: 222.218.149.*
    那本书很不错啊,我一次可以连续看5个小时呢~~~
    #gunwithrose 发表于2007-08-07 10:25:59  IP: 219.157.146.*
    哈哈,您也来开博了啊,看过您的书,谢谢!~
    #xujianlane 发表于2007-08-08 17:00:46  IP: unknown, 211.*
    书很不错,很喜欢你的风格
    #jh_16 发表于2007-08-09 13:43:35  IP: 218.249.36.*
    第一次看《高质量程序设计指南》是在网上看的,当时还没有出书,好像当初是花了一晚上的时间看完了,受益匪浅,谢谢
    #lyderek2005 发表于2007-08-10 10:30:34  IP: 121.25.39.*
    喜欢你~
    现在还在上海贝尔吗?呵呵
    #Hylas 发表于2007-08-13 16:03:06  IP: 218.108.1.*
    大学看过你的书,文笔不错。

    你比较适合写书
    #Hylas 发表于2007-08-13 16:04:18  IP: 218.108.1.*
    xsh525

    别不甘心,c++的领域只会更强
    #agang200008 发表于2007-08-13 18:34:36  IP: 218.6.230.*
    感谢你,你的这本书给了我很大的帮助
    #zywhuiss 发表于2007-08-14 10:42:05  IP: 202.106.95.*
    以前有一次花了 一晚上的时间把第一版从头到尾看完了 ,一个字都没落下,受益匪浅,谢谢!
    #lxrm_fly 发表于2007-08-14 10:51:16  IP: 124.114.202.*
    受益匪浅
    #healer_kx 发表于2007-08-15 16:24:32  IP: 202.108.130.*
    是本简单易懂,又能给人帮助的书。
    #zhaori 发表于2007-08-15 16:44:49  IP: 218.79.116.*
    非常好的书,继续关注
    #sanwater_001 发表于2007-08-17 19:50:39  IP: 60.191.108.*
    是否能签名免费送?
    呵呵
    #gnidnuy 发表于2007-08-30 16:52:01  IP: 125.70.227.*
    很不错的一本书。 有次去中兴面试实习生,考的题就是后面附的试卷……,简直无语了
    #yhmhappy2006 发表于2007-09-19 12:35:29  IP: 60.12.8.*
    18. Page 193: 示例12-3中少写了一句话,所以用下面的代码替换(红色表示修改的地方):

    private:

    RingBuffer(const RingBuffer<N>&);

    void operator=(const RingBuffer<N>&);

    这些不要删除吗?
    #northwest_wolf 发表于2007-09-19 16:14:21  IP: 203.86.44.*
    是的,应该删除,我忘记了。谢谢提醒!
    #northwest_wolf 发表于2007-09-24 23:04:28  IP: 221.216.249.*
    真是不好意思!编辑文章时,网页中提供的word拷贝/粘贴功能无法使用,所以只好把代码转换成jpg图片插入,所以有点儿模糊,请大家谅解!否则,如果使用纯文本,代码还得重新排版,非常费时和麻烦。另外,如果大家对代码存在疑虑或者改进建议,可以来信,我们一起讨论。northwest_wolf@sina.com
    #northwest_wolf 发表于2007-09-24 23:09:22  IP: 221.216.249.*
    如果陆续发现问题,我将在新文章中予以公布。
    #luodongshui 发表于2007-10-02 16:12:38  IP: 121.35.253.*
    感谢作者的认真态度。。。
    #zellsun 发表于2007-10-31 22:13:45  IP: 221.2.164.*
    谢谢老师负责的态度。刚刚我都按着改过来了,还好大多都是小瑕疵。但可见老师严谨的态度!买您的正版感觉很超值!而且书的内容正是所需,我来突击笔试了。嘿嘿~
    #siluplsy 发表于2007-11-01 01:19:23  IP: 210.75.140.*
    此书已纳入购书计划,好书!好书!
    #zellsun 发表于2007-11-02 22:08:27  IP: 221.2.164.*
    老师,说个题外话。我最近看了Deitel父子的C++/C教程,以前就觉得那里面的例程都叫做图X-X特别扭,明明是例程嘛!叫图做什么呢?看了您的修订,突然恍然大悟,明白了他们书里面的例程原来确实都是用图文件的形式来表示的。要不代码段完全暴露在排版软件的控制之下,很容易不小心就被篡改了
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 春分化雪