C语言中指针作为函数参数传递的问题

毕业论文是基于CUDA在GPU上做一些遥感影像处理的并行程序,开始大量使用CUDA C(大部分情况下就是标准C)。虽说是C号称是很“基础”的东西,大家上大学第一学年就学习过(甚至很多非计算机相关专业也要学),期末还能拿个90+,可最近频繁的掉坑还是再一次说明:编程这件事仅靠背书是断然不行的。下面总结一下刚刚踩过的一个C语言中较为有代表性的坑。
今天编程时遇到了一个问题,写到一个函数时,让这个函数通过参数返回内存某一个缓冲区的首地址。在网上找了找,发现以下这段代码比较有代表性,于是复制过来作为一个总结说明。

下面这段代码是典型的踩坑,这段代码通过函数申请一片内存区,并将申请到的内存首地址返回给调用函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
void getptr(int *p,int num) {
p = (int *)maccol(num * sizeof(int));
}
void main() {
int *ptr = NULL;
int k;
getptr(ptr,10);
if (ptr == NULL)
printf("Ptr is still NULL");
}

Read More

Mac上基于Homebrew升级Git

最近Git被安全界爆出存在高危漏洞一枚,波及了Windows以及*nix平台上运行的绝大多数版本的Git客户端,github针对此事反应迅速,并且很快发布了官方公告,公告中针对情况进行了简单说明,并明确了几个经过Git核心团队修复解决存在漏洞的Git版本:

The Git core team has announced maintenance releases for all current versions of Git (v1.8.5.6, v1.9.5, v2.0.5, v2.1.4, and v2.2.1).

今天上午看到国内安全界大牛黑哥@hi_heige也在微博发表了测试本地Git客户端是否存在漏洞的方法,以及针对Mac平台进行Git升级的操作流程:

黑哥的微博

Read More