存档

2014年12月 的存档

关于 SHELL 的笔记

2014/12/27 6,967
  1. 你可能不知道的shell   陈皓推荐的一些有用而冷门的shell
  2. 如何调试bash脚本 依然是陈皓的分享

apt 如何完成卸载软件

2014/12/25 6,227

http://www.blogguy.cn/show-835-1.html

Android开发时,在AndroidManifest.xml中指定特定的权限

2014/12/24 6,017

Android开发时,在AndroidManifest.xml中指定特定的权限

如下,指明程序有访问网络和写扩展存储(SDCARD)的权限.

 

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Windows 编译 libcurl with openssl 的链接问题

2014/12/22 7,160

libcurl 7.52.0  编译 OpenSSL 依赖。

1.使用如下目录结构

2.将 OpenSSL 的 lib,dll,头文件(带openssl文件夹) 分别拷贝到 deps 路径的 lib,bin,include 目录下

3. 进入 winbuild 目录。

 

编译正确。但是在链接阶段出现 openssl.obj 中的某些符号无法链接:

检查  libcurl\lib\vtls\openssl.c 文件,发现这些符号都与  OPENSSL_VERSION_NUMBER 宏有关。这个宏在 openssl的头文件 opensslv.h 中定义。

在  libcurl\lib\vtls\openssl.h   中添加 opensslv.h 引用,重新编译,可解决此问题。

Linton法则

2014/12/15 5,984

当我们在实现一个带有引用参数的函数时,可能会将该参数的地址存储在该函数作用域外的某个地方。如下代码所示:

MyObject* pObj = NULL;
MyObject tempObj;
void Fun(const MyObject& obj)
{
pObj = &obj;
}

tempObj.Release();

pObj.DoSomething();

当变量tempObj释放后,pObj仍保留了其地址。这将导致pObj变为空悬指针。

为了避免此类BUG出现,Mark Linton提出了如下法则:

函数中,禁止将引用参数的指针保存到函数作用域外。如果确有需要,需要将引用参数声明为指针参数