2013年4月8日

多文件编译中 undefined reference to 库函数问题

摘要: undefined reference to是一个非常普遍的问题,而且出现这种提示之后有很多的原因。但是碰到的一个问题却非常诡异。核心问题就是多文件连接时的顺序问题!我是进行多文件编译,调用了两个开源库函数。我在我自己的虚拟机上的Fedora系统上能够编译连接通过并顺利执行,但是切换到Ubuntu系统的时候,各个文件单独编译能够编译通过,但是把各个目标文件连接成可执行文件的时候却报错,undefined reference to所有的引用的库函数。于是我搜索了各种相关问题的原因,并一遍一遍地尝试,最终在调整了连接命令的顺序之后在Ubuntu上连接通过。我的Makefile文件中连接生成可执行文 阅读全文

posted @ 2013-04-08 20:32 joygpwan 阅读(426) 评论(0) 推荐(0) 编辑

c++中在堆和栈中申请空间的差别

摘要: 堆中和栈中申请的空间的比较, 我找到了下面的比较:栈的情况:栈上分配空间的好处是快,而且对象生存期是自动的,离开当前域之后就自动析构回收。坏处就是栈空间有限,而且不能人为控制对象的生存期,比如你无法将一个函数内部的栈上的对象返回,因为这个函数执行完毕后栈空间会自动回收。堆的情况堆上分配空间就相反,new一个空间出来是较慢的,而且对堆上对象的访问也稍慢于栈上。一旦new一个空间出来,需要自己手动去delete回收,系统不会帮你管理回收(用GC的除外),但是分配空间大小灵活,而且正因为是手动回收的,你可以自由控制对象生存期,常用来跨域传递对象。管理方式不同:栈是由编译器自动管理的。堆的释放工作是由 阅读全文

posted @ 2013-04-08 20:03 joygpwan 阅读(3165) 评论(0) 推荐(0) 编辑

【转】一个fork的面试题

摘要: 前两天有人问了个关于Unix的fork()系统调用的面试题,这个题正好是我大约十年前找工作时某公司问我的一个题,我觉得比较有趣,写篇文章与大家分享一下。这个题是这样的:题目:请问下面的程序一共输出多少个“-”?#include <stdio.h>#include <sys/types.h>#include <unistd.h>int main(void){ int i; for(i=0; i<2; i++){ fork(); printf("-"); } return 0;}如果你对fork()的机制比较熟悉的话,这个题并不难,输出 阅读全文

posted @ 2013-04-08 18:47 joygpwan 阅读(155) 评论(0) 推荐(0) 编辑

导航