C/C++
文章平均质量分 70
czj1992czj
这个作者很懒,什么都没留下…
展开
-
malloc,calloc,realloc的区别
void *malloc(size_t size);void *calloc(size_t nmemb, size_t size);void *realloc(void *ptr, size_t size);malloc The malloc() function allocates size bytes and returns a pointer to the allocated mem...原创 2018-04-10 10:53:42 · 197 阅读 · 0 评论 -
C I/O 复用 select
#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <sys/select.h>#include <unistd.h>#include <arpa/inet.h>#原创 2018-05-25 09:54:07 · 146 阅读 · 0 评论 -
C I/O 复用 poll
#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <poll.h>#include <arpa/inet.h>#include <unistd.h>#includ原创 2018-05-25 09:54:19 · 146 阅读 · 0 评论 -
C I/O 复用 epoll
#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <sys/epoll.h>#include <stdlib.h>#include <arpa/inet.h>#d原创 2018-05-25 10:02:48 · 195 阅读 · 0 评论 -
C 孤儿进程与僵尸进程
僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。注意:所有的进程都会有成为僵尸进程的过程,每个进程在终结时都会将自己进程的信息发给父进程,等待父进程来处理,这个等待阶段就是僵尸进程。不同的是,一般的父进程会很快将已经死亡的子进程处理掉,但是父进程没有收到信息,或...原创 2018-05-19 11:04:31 · 228 阅读 · 0 评论 -
C 进程间通信--有名管道,无名管道
1.管道的概念 管道是单向的、先进先出的,它把一个进程的输出和另一个进程的输入连接在一起。一个进程(写进程)在管道的尾部写入数据,另一个进程(读进程)从管道的头部读出数据。 数据被一个进程读出后,将被从管道中删除,其它读进程将不能再读到这些数据。 管道提供了简单的流控制机制,进程试图读空管道时,进程将阻塞。同样,管道已经满时,进程再试图向管道写入数据,进程将阻塞 管道包括无名管道和有名管道两种,前...原创 2018-05-25 17:26:13 · 331 阅读 · 0 评论 -
C 进程间通信--消息队列
消息队列是消息的链接表,包括Posix消息队列system V消息队列。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。 //消息队列A#include <stdio.h>#include <sys/types.h>#include <sys/ipc....原创 2018-05-25 17:26:23 · 390 阅读 · 0 评论 -
C 进程间通信--共享内存
共享内存是运行在同一台机器上的进程间通信最快的方式,因为数据不需要在不同的进程间复制。通常由一个进程创建一块共享内存区,其余进程对这块内存区进行 读写。得到共享内存有两种方式:映射/dev/mem设备和内存映像文件。前一种方式不给系统带来额外的开销,但在现实中并不常用,因为它控制存取的将是 实际的物理内存,在Linux系统下,这只有通过限制Linux系统存取的内存才可以做到,这当然不太实际。常用的...原创 2018-05-26 08:49:06 · 357 阅读 · 0 评论 -
C++ 深浅copy
#include <iostream>using namespace std;class Integer{public: Integer(int data):m_data(new int(data)){} ~Integer(void){ cout << "xigou"<< endl; ...原创 2018-05-22 15:26:10 · 159 阅读 · 0 评论 -
Zero Copy 原理
本文主要参考https://www.linuxjournal.com/article/6345用户程序操作磁盘:你可能觉得,把数据从内核空间拷贝到用户空间似乎有些多余。为什么不直接让磁盘控制器把数据送到用户空间的缓冲呢?这样做有几个问题。1、硬盘通常不能直接访问用户空间。2、像磁盘这样基于块存储的硬件设备操作的是固定大小的数据块,而用户进程请求的可能是任意大小的或非对齐的数据块。在数据往来于用户空...原创 2018-05-03 15:17:16 · 611 阅读 · 0 评论 -
C 语言const关键字使用
1 const与变量#include<stdio.h>int main(){ const int a = 100; //a = 90; ERR readonly return 0;}2 cost与指针 (1) const int *p1 (2) int const *p2 (3) int * const ...原创 2018-04-04 10:48:40 · 508 阅读 · 0 评论 -
C 语言形参中的数组注意事项
1、形参中的数组,不是数组,它是普通指针变量2、形能数组,int a[1000],int a[],int *a 对编译器而言,没有任何区别3、编译器都是当做int *处理4、形参中的数组和非形参数组区别:形参中的数组是指针变量#include<stdio.h>void print_array(int arr[],int size){ int i = 0; ...原创 2018-04-04 14:52:33 · 568 阅读 · 0 评论 -
选择排序
算法描述选择排序(Selection-sort)是一种简单直观的排序算法。它的工作原理:首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 算法分析表现最稳定的排序算法之一,因为无论什么数据进去都是O(n2)的时间复杂度,所以用到它的时候,数据规模越小越好。唯一的好处可能就...原创 2018-04-18 15:18:45 · 162 阅读 · 0 评论 -
插入排序
算法描述插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。算法分析插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。动图演示C语言#include<st...原创 2018-04-18 15:35:19 · 159 阅读 · 0 评论 -
C语言 数组指针与指针数组区别
数组指针(也称行指针)int (*p)[n];()优先及高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。int a[3][2]int (*p)[2]p = a;p++; 该语句执行后,也就是p=p+1,p跨过a[0][]指向了a[1][]所以数组指针也称指向一维数组的指针,亦称行指针。查看下例demo:...原创 2018-04-06 17:13:02 · 275 阅读 · 0 评论 -
归并排序
算法描述归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。算法分析归并排序是一种稳定的排序方法。和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多,因为始终都是O(nl...原创 2018-04-18 17:55:12 · 177 阅读 · 0 评论 -
快速排序
算法描述快速排序的基本思想:通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序。动图演示C语言第一版#include<stdio.h>void quicksort1(int *,int,int);int partition(int *,int,int);void swap(int *,in...原创 2018-04-19 13:42:04 · 272 阅读 · 0 评论