02 2023 档案

摘要:1. 空指针常量 一个表示0值的整数常量,叫做空指针常量。例如:0,(void*)0,void* NULL 空指针常量可以赋值给任何指针类型,因为它是变体类型(void*) 更倾向于用NULL表示空指针常量 int *p = 0; int *p = NULL; 2. NULL指针 NULL是一个标准 阅读全文
posted @ 2023-02-26 10:21 预期 阅读(144) 评论(0) 推荐(0)
摘要:0. 问题 char* text = "abcdef ghi"; *(text+3) = 'x'; // 可以编译,但运行到这句就会出错 char a[100] = "abcdef ghi"; char* text = a; *(text+3) = 'x'; // 可以 原因:涉及到内存分配。一个程 阅读全文
posted @ 2023-02-24 21:33 预期 阅读(117) 评论(0) 推荐(0)
摘要:1. 水平触发 LT 水平触发模式下,如果在客户端连接connfd加入epoll时,就注册了EPOLLOUT。 ​ 在建立连接后,由于最开始时,内核缓冲区为空,则会不断的触发EPOLLOUT ​ 而当客户端发送消息给服务端后,服务端又将消息发送回来,若写缓冲区满了,就不会再触发EPOLLOUT,否则 阅读全文
posted @ 2023-02-23 20:39 预期 阅读(853) 评论(0) 推荐(0)
摘要:触发模式和EPOLLONESHOT 1. 基本概念 水平触发: LT 缺省的工作模式,当被监控的文件描述符上有可读写的事件发生时,epoll_wait() 就会给用户通知,如果用户没有一次的将数据读完(可能是读写缓冲区太小),那么每次调用epoll_wait(),都会给用户通知。 读缓冲区有数据 - 阅读全文
posted @ 2023-02-23 09:48 预期 阅读(340) 评论(0) 推荐(0)
摘要:线程池的回调工作函数为什么必须设置成static,类内静态成员函数? pthread_create(pthread_t *thread_tid, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); 创建线程 阅读全文
posted @ 2023-02-17 21:15 预期 阅读(161) 评论(0) 推荐(0)
摘要:printf的缓冲机制 参考链接:https://www.cnblogs.com/sinferwu/p/12426410.html printf是C库函数,是对系统调用write的封装,有其特有的缓冲机制。 printf函数实际上只是输出到了标准输出缓冲队列上,并没有实实在在的打印到屏幕上,标准输出 阅读全文
posted @ 2023-02-11 16:41 预期 阅读(168) 评论(0) 推荐(0)
摘要:使用GDB分析core文件 当进程发生异常会产生段错误 生产core文件 通过命令ulimit -a查看信息,一般是第一行,core file size是core文件的大小,若是0,则不产生core文件 通过ulimit -c xx 可以设置大小,或者直接设置成unlimited 不限制 ulimi 阅读全文
posted @ 2023-02-11 16:40 预期 阅读(801) 评论(0) 推荐(0)