用Valgrind定位子进程内存泄漏

1. valgrind跟踪子进程 以下例子用spawn-cgi来测试验证,spawn-cgi会生成一个cgi子进程 --trace-children=yes:valgrind加上该参数用于跟踪子进程 valgrind --leak-check=full --trace-children=ye...

2019-04-16 17:52:58

阅读数 9

评论数 0

linux环境内存分配原理 mallocinfo

Linux的虚拟内存管理有几个关键概念: Linux 虚拟地址空间如何分布?malloc和free是如何分配和释放内存?如何查看堆内内存的碎片情况?既然堆内内存brk和sbrk不能直接释放,为什么不全部使用 mmap 来分配,munmap直接释放呢 ? Linux的虚拟内存管理有几个关键概念:...

2019-03-28 09:42:08

阅读数 57

评论数 0

malloc_stats---检查内存泄露的神器

在之前的博客中提到过,valgrind可以用来检测内存泄露,但在使用中,往往会遇到一些问题,给调试工作带来很多不必要的麻烦,我自己遇到的有以下两种: (1)内存泄露误检(系统初始化时,可能有一些需要长期保存在内存中的数据结构,这些空间是永远不释放的,而这些内存会被认为绝对泄露) (2) val...

2019-03-25 17:30:01

阅读数 63

评论数 0

Linux编程基础之进程等待(wait()函数

编程过程中,有时需要让一个进程等待另一个进程,最常见的是父进程等待自己的子进程,或者父进程回收自己的子进程资源包括僵尸进程。这里简单介绍一下系统调用函数:wait() 函数原型是 #include <sys/types.h>/* 提供类型pid...

2019-03-11 20:43:41

阅读数 24

评论数 0

采用epoll实现echo server和client

服务器代码: #include <sys/socket.h> #include <sys/epoll.h> #include <netinet/in.h&g...

2019-03-07 17:40:40

阅读数 37

评论数 0

EAGAIN、EWOULDBLOCK、EINTR与非阻塞的长连接

EWOULDBLOCK: 用于非阻塞模式,不需要重新读或者写 EINTR: 指操作被中断唤醒,需要重新读/写 EAGAIN:Resource temporarily unavailable,这表明你在非阻塞模式下调用了阻塞操作,在该操作没有完成就返回这个错误,这个错误不会破坏socket的同步 ...

2019-03-07 10:06:46

阅读数 33

评论数 0

浅析套接字中SO_REUSEPORT和SO_REUSEADDR的区别

转载地址:https://blog.csdn.net/yaokai_assultmaster/article/details/68951150 Socket的基本背景 在讨论这两个选项的区别时,我们需要知道的是BSD实现是所有socket实现的起源。基本上其他所有的系统某种程度上都参考了BSD...

2019-02-07 10:40:30

阅读数 64

评论数 0

gcc程序的编译过程和链接原理

    一、C/C++文件的编译过程: 先来看一下gcc的使用方法和常用选项 提示:gcc --help   Ⅰ、使用方法: gcc [选项] 文件名 Ⅱ、常用选项: 选项 含义 选项 含义 -v 查看...

2019-02-05 23:09:59

阅读数 37

评论数 0

getopt 函数的简单使用

最近在弄Linux C编程,本科的时候没好好学啊,希望学弟学妹们引以为鉴。 好了,虽然啰嗦了点,但确实是忠告。步入正题: 我们的主角----getopt()函数。 英雄不问出处,getopt()函数的出处就是unistd.h头文件(哈哈),写代码的时候千万不要忘记把他老人家include上。...

2019-01-26 17:43:22

阅读数 100

评论数 0

warning: integer overflow in expression [-Woverflow]

C语言大数字表示易错点 错误事例 #include <stdio.h> #include <stdlib.h> #include <stri...

2019-01-04 11:00:58

阅读数 205

评论数 0

大小为0的数组

 size为0的数组是GUN C支持的一个特性,这个特性可以用来模拟动态大小的数组,同时又避免了一些问题,所以还是比较有实际意义的一个小技巧。在网上参考了一些资料,大多数资料都是以结构体中包含一个大小为0的数组为例。我想这样可能是基于两点考虑:   因为动态大小是“模拟”出来的,所以不可避免要...

2018-08-23 14:15:30

阅读数 340

评论数 0

sscanf,sscanf_s及其相关用法

#include<stdio.h>  定义函数 int sscanf (const char *str,const char * format,........); 函数说明   sscanf()会将参数str的字符串根据参数format字符串来转换...

2018-08-15 13:49:32

阅读数 364

评论数 0

函数指针

转自:函数指针什么是函数指针?函数指针指向的是特殊的数据类型,函数的类型是由其返回的数据类型和其参数列表共同决定的,而函数的名称则不是其类型的一部分。一个具体函数的名字,如果后面不跟调用符号(即...

2018-04-23 20:49:37

阅读数 26

评论数 0

C/C++变长参数实现log输出

__VA_ARGS__宏使用说明#define qWiFiDebug(format, ...) qDebug("[WiFi] "format" File:%s, Line:%d, Function:%s", ##__VA_AR...

2018-02-26 15:49:18

阅读数 113

评论数 0

malloc函数分配内存失败的原因及解决方法

先说结论malloc()函数分配内存失败的原因: 1. 内存不足。 2. 在前面的程序中出现了内存的越界访问,导致malloc()分配函数所涉及的一些信息被破坏。下次再使用malloc()函数申请内存就会失败,返回空指针NULL(0)。解决方法: 1.在STM32中堆空间内存不足的解决方法可以参考...

2018-02-08 10:39:37

阅读数 1605

评论数 0

C 语言资源大全

转载地址:http://blog.jobbole.com/95054/C 语言资源大全koz.ross 维护的一个 C 语言资源列表,包括了:构建系统、编译器、数据库、加密、初中高的教程/指南、书籍、库等等。【特别提示】:伯乐在线已经在 GitHub 上发起了C 语言资源大全中文版的整理项目,链接...

2018-01-19 15:44:18

阅读数 276

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭