C C++
文章平均质量分 87
Jogger_Ling
这个作者很懒,什么都没留下…
展开
-
码字pthread
多线程tcp实例服务端:/************pthread_cond_wait()的使用方法**********/ //pthread_mutex_lock(&qlock); /*lock*///pt原创 2021-03-31 17:44:04 · 128 阅读 · 0 评论 -
c/c++动静态链接库
回顾一下编译过程#include <stdio.h> int g(...原创 2021-03-25 15:23:05 · 259 阅读 · 0 评论 -
auto_ptr、scoped_ptr、unique_ptr 分析
c++ 动态指针的一些问题 #这事涉及资源所有权的问题。scoped_ptr,auto_ptr都是表达唯一所有权持有者的,区别在于,scoped_ptr的所有权是从一而终的,auto_ptr则允许用户以很自然的方式转交资源。两者的设计理念都保证同一时刻所有权持有者唯一。auto_ptr的好处是显而易见的。比如你在用vector保存智能指针时,由于大量元素操作必须涉及资源转移,scoped_ptr完全没法用。然而其设计上的最大问题在于让一切赋值行为变成了资源转交。这一点不符合最小惊讶原则,你很难.原创 2021-03-25 11:17:49 · 233 阅读 · 0 评论 -
浅析Linux信号机制
信号在Linux系统中有广泛的应用,但信号机制不像消息队列、信号量那么直接明了,而是存在着较多的特殊逻辑。本文主要是分析信号的用户层接口在内核中是如何实现的,以及使用过程中需要注意的地方。如无特别说明,本文中内核代码的版本是2.6.32.27(展示代码有删减,只保留相关的部分),体系结构是IA-32。1.基础知识这里不介绍信号的概念、作用和常用API等内容,只是描述一下内核中和信原创 2021-03-30 16:10:48 · 438 阅读 · 0 评论 -
gdb调试秘籍(寄存器、栈)
GDB的常用调试命令大家可以查阅gdb手册就可以快速的上手了,在这儿就不给大家分享了,需要的可以到GDB的官网去下载手册。这里重点分享下GDB调试中的一些寄存器和栈的相关知识用于解决下列gdb调试时的问题:优化的代码在printf或其它glibc函数处core没有检查返回值的函数调用异常导致的异常优化的代码的计算异常的中间过程分析栈溢出导致的core局部变量越界导致栈异转载 2017-03-21 16:13:49 · 18981 阅读 · 2 评论 -
栈 与 堆 的区别及其探讨
堆与栈有什么区别? 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,转载 2014-08-03 11:34:38 · 477 阅读 · 0 评论 -
pthread_cond_signal和pthread_cond_wait简介
pthread_cond_wait() 用于阻塞当前线程,等待别的线程使用pthread_cond_signal()或pthread_cond_broadcast来唤醒它。 pthread_cond_wait() 必须与pthread_mutex 配套使用。pthread_cond_wait()函数一进入wait状态就会自动release mutex。当其他线程通过pthread_cond_s转载 2014-07-14 12:28:05 · 657 阅读 · 0 评论 -
socket通信概要
“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型转载 2014-07-24 22:12:34 · 418 阅读 · 0 评论 -
C语言中最常用标准库函数
标准头文件包括: 一、标准定义() 文件里包含了标准库的一些常用定义,无论我们包含哪个标准头文件,都会被自动包含进来。 这个文件里定义: l类型size_t (sizeof运算符的结果类型原创 2014-07-25 12:19:55 · 526 阅读 · 0 评论 -
malloc/free与new/delete的区别
相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不转载 2014-07-24 08:57:51 · 467 阅读 · 0 评论