学习是一种信仰。
分类: C/C++
2013-08-31 14:25:00
1、在linux中如何编译C程序,使之成为可执行文件?如何调试?
答案: 1)检查程序中.h文件所在的目录,将其加入系统PATH中;
2)执行C编译:#gcc [源文件名] -o [目标文件名]
执行C++编译:#g++ [源文件名] -o [目标文件名]
3)改变目标文件为可执行文件:#chmod +x [目标文件名]
4)如需将多个可执行文件连续执行,可生成批处理文件:
#vi [批处理文件名]
可执行文件1
可执行文件2
......
最后将该批处理文件属性该为可执行。
调试:在编译时使用-g参数,就可以使用gdb进行调试。
2、写出内存分配和释放的函数,并指出区别。
C语言的标准内存分配函数:malloc,calloc,realloc,free等。
malloc与calloc的区别为1块与n块的区别:
malloc调用形式为(类型*)malloc(size):在内存的动态存储区中分配一块长度为“size”字节的连续区域,返回该区域的首地址。
calloc调用形式为(类型*)calloc(n,size):在内存的动态存储区中分配n块长度为“size”字节的连续区域,返回首地址。
realloc调用形式为(类型*)realloc(*ptr,size):将ptr内存大小增大到size。
free的调用形式为free(void*ptr):释放ptr所指向的一块内存空间。
C++中为new/delete函数。
3、写出socket函数,并指出其功能。
socket():建立socket通信描述符;
bind():将套接字和机器上的一定的端口关联;
connect():连接到远程主机;
listen():使套接字做好连接的准备,规定等待服务请求队列的长度;
accept():接受连接,一旦有客户端发出连接,accept返回客户地址信息和一个新的sock;有了这个新的sock,双方就可以开始收发数据:
send()和recv():用于流式套接字或者数据套接字的通讯;
sendto()和recvfrom():用于无连接的数据报套接字;
close():关闭套接字;
shutdown():选择性的关闭套接字,可以只允许某一方向的通讯关闭;
getpeername():返回流式套接字时对端peer信息;
gethostname():返回程序所运行的机器的主机名字;
gethostbyname():返回本机IP;