摘要: c++ 内存获取和释放 new/delete,new[]/delete[]c 内存获取和释放 malloc/free, calloc/realloc上述8个函数/操作符是c/c++语言里常用来做动态内存的申请和释放的,要理解这些接口,大概需要下面几个维度的了解:1. 了解OS的进程空间模型,一个进程的地址空间,一般划分为内核区、用户区,用户区又划分为栈区、堆区、数据区、代码区。这里的‘堆区’,‘栈区’,‘数据区’,‘内核区’,其实就是一个虚拟地址区间,动态内存最终都是从OS的'堆区'上获取的。2. brk、mmap 系统调用brk系统调用,可以让进程的堆指针增长一定的大小,逻辑 阅读全文
posted @ 2013-11-12 19:43 cgj 阅读(2319) 评论(1) 推荐(0) 编辑
摘要: 第一届淘宝并发编程比赛-多线程排序性能优化http://ifeve.com/tao-code-match-1/在这里看到一道题目,从一个文件里读取字符串,排序,然后写入另一个文件。用C实现了一下,逻辑比较简单:1 将文件读取进来放到一个结构数组里2 根据线程数目N切割这个数组为N个子数组(如果无法整切,多出来的部分由主线程负责排序),每个线程使用qsort算法排序子数组3 主线程等待所有子线程排好序,然后归并子线程的结果4 将结果写入文件在我的机器上,Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz,用4个线程,结果如下:read fp : ./sowpods.t 阅读全文
posted @ 2013-11-12 17:09 cgj 阅读(4323) 评论(0) 推荐(0) 编辑