2014-11-24~11-28 工作备忘

  1. c++ new, 应该使用char * p = new(std::nothrow) char[1024];

    if(p == nullptr)

    {...}

    否则内存分配失败时,会抛异常,而非返回空

  2. nullptr

    c++中最好使用这个代替NULL(通常被定义为 0, 自己也可以重定义),一方面是代码可读性强,标明是指针;另一方面,看如下情况

    函数1的声明 void f(int i, int* p);

    函数2的声明 void f(int i, int p);

    那么你调用 f(4, NULL)可能是希望调用第1个函数,但是悲催的,你调用了第2个。那么定义

    #define NULL ((void*)0)不行吗? 答案是不行,c++不允许void *变量赋值给其他类型的指针(反之可以)

    另外,如果你使用了模板可能会导致编译报错。比如

    void test(std::pair<int*, int> p);的函数,如果你调用了test(std::make_pair<NULL, 4>)编译器会报错。当然,函数是可以转换的如果定义了

    test(int *p);调用了test(0)或者test(NULL),那么系统自动转换到空指针调用上面了,这个不会导致编译器报错

  3. vs2010中,关于预编译头文件

    项目里面的设置默认是给所有为单独设定的文件进行设定的。比如a.cpp “使用预编译头文件”

    如果项目默认是不使用,那么a.cpp就是单独使用预编译头文件。如果此时你没有定义stdafx.cpp,你应该定义一个stdafx.cpp,stdafx.h,并指定stdafx.cpp为 “创建预编译头文件”(否则你编译会说找不到.pch文件),虽然没有测试,但是我觉得预编译头文件应该可以用其他名字,但是必须保证有一个是用来创建预编译头文件的,其他的用来使用。

    一旦你对一个目录下的cpp使用了预编译头文件,那么,即使这个cpp不在stdafx.h同一个目录下面,编译也不会提示你找不到头文件,因为只要你项目有.pch,这个cpp就会找到相应信息。

  4. windbg 的 分析dmp文件的命令:

    !analyze -v

  5. 关于帮助异常定位
throw一个整数(特定的)可以定位异常位置
我们可以在自己需要抛出异常的地方,抛出一个特定的整数,便于崩溃时发现异常代码的位置。
比如可以定义
struct EXP_VALUE
{ 
    static const ULONG64 exp_value_offset = 0xa1b2d3e4f9e80000;
    static const ULONG64 exp_value_1 = exp_value_offset + 1;
    static const ULONG64 exp_value_2 = exp_value_offset + 2;
    ...
 };
 ...
 这样,代码中可以这样
 if(p == nullptr)
     throw exp_value_2;
 ...
 
 if(this_p == 7)
    throw_exp_value_1;
 等等
时间: 2024-10-05 04:54:53

2014-11-24~11-28 工作备忘的相关文章

工作备忘:cacti&nagios登录密码修改方法

[[email protected]]# mysql -u root -p mysql> use cacti; mysql> select * from user_auth; mysql> update user_auth set password=md5("cactipasswd") where id='1'; 现在cacti登录的新密码就是cactipasswd [[email protected]]# /usr/bin/htpasswd /usr/local/n

ubuntu 下anroid开发--工作备忘

1 使用命令 查询字符串(搜索所有文件)grep mobile_provisioning * -r 2 删除一些没有git add 的文件即 git rm Untracked filesgit clean -f 3 全编anroid源码时,编译加速 export USE_CCACHE=1 ubuntu 下anroid开发--工作备忘,布布扣,bubuko.com

PSP(11.24~11.30)

27号 类别c 内容c 开始时间s 结束e 中断I 净时间T 作业 构建执法.写博客 14:00 14:40 0m 40m 28号 类别c 内容c 开始时间s 结束e 中断I 净时间T java 编码 9:00 11:00 15 105m 作业 写博客 13:30 14:55 15 70m 29号 类别c 内容c 开始时间s 结束e 中断I 净时间T java 编码 10:00 11:15 0 75m java 看视频 14:30 15:10 0 40m java 编码 15:10 17:10

11. 星际争霸之php设计模式--备忘模式

题记==============================================================================本php设计模式专辑来源于博客(jymoz.com),现在已经访问不了了,这一系列文章是我找了很久才找到完整的,感谢作者jymoz的辛苦付出哦! 本文地址:http://www.cnblogs.com/davidhhuan/p/4248190.html============================================

opencv-2.4.11编译备忘

编译完成后,想测试example中例子,但是由于没有sudo权限,不能运行pkg-config查看opencv的--cflags和--libs. 记录一下,备忘: pkg-config --libs opencv -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objde

工作中常用SQL 查询语句备忘

--当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列.select (case when a>b then a else b end ), (case when b>c then b esle c end) from table_name --求和查询 create table #tmp(rq varchar(10), shengfu nchar(1)) insert into #tmp values('2005-05-09','胜') insert into #tm

杨帆之工作日志-2014.6.24

还有几天,自己已经工作两个月了,确切的从今天算,这是第39个工作日. 早就打算写点什么东西来记录自己的工作,自己的心情,自己的一些心得体会,可是总是觉得还不到时候,有些东西,没有沉淀的很好,有些事情,还没有想太明白,有些话,不知道该不该说. 也许这次也不是一个很好的时机,但是总是隐隐觉得必须安静下来写点什么东西了,两个月的时间,我还没有来得及抓住什么,怎么就溜走了呢,我想,再不写点什么,或许就再也写不出此时此地的感受了. 开始关注职场类型的文章了,就注意到了这么一句话,你第一次工作的单位在很大程

Unparseable date: &quot;Mon Aug 15 11:24:39 CST 2016&quot;,时间格式转换异常

String datestr= "Mon Aug 15 11:24:39 CST 2016";//Date的默认格式显示 Date date=new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy", Locale.UK)).parse(datestr); //格式化SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); String sDate=

11.22 访问日志不记录静态文件;11.23 访问日志切割;11.24 静态元素过期时间

扩展: apache日志记录代理IP以及真实客户端IP : http://ask.apelearn.com/question/960 apache只记录指定URI的日志 : http://ask.apelearn.com/question/981 apache日志记录客户端请求的域名 : http://ask.apelearn.com/question/1037 apache 日志切割问题 : http://ask.apelearn.com/question/566 11.22 访问日志不记录静