随笔分类 -  C

摘要:http://www.yovae.com/blog/linux-gcc%E7%BC%96%E8%AF%91%E9%94%99%E8%AF%AF.htmllinux gcc编译错误2011年09月12日⁄c/c++,操作系统⁄暂无评论linux系统下的c编程与windows有所不同,如果你在用gcc编译代码的时候提示‘for’ loop initial declarations are only allowed in C99 mode,可能就是因为你在loop循环比如for中使用未预先定义的变量,比如:for(int i=0;i<10;i++){}这种写法在vc里是没有错的,而子gcc就会 阅读全文
posted @ 2012-01-06 17:41 balaamwe 编辑
摘要:http://blog.chinaunix.net/space.php?uid=7907749&do=blog&id=2037213dlmalloc解析连载完结【总】(2009-05-27 17:26)分类:dlmalloc解析目录1.本文档介绍2.边界标记法3.分箱式内存管理4.核心结构体malloc_state5.内存分配相关函数5.1函数dlmalloc5.2函数tmalloc_small5.3函数tmalloc_large5.4函数sys_alloc5.5函数mmap_alloc6.内存回收相关函数6.1函数dlfree6.2函数sys_trim7.本文档声明1.本文档 阅读全文
posted @ 2012-01-06 15:23 balaamwe 编辑
摘要:http://3xin2yi.info/wwwroot/tech/doku.php/tech:system:memoryleak内存泄露是指在程序运行过程中,动态申请了部分内存空间,却没有在使用完毕后将其释放,结果导致该内存空间无法被再次使用。内存泄露是使用C或C++编程时易犯的错误之一,严重的内存泄露常常表现为:程序运行时间的越长,占用的内存越多,最终导致系统内存枯竭。如以下代码:int *dup_buffer(int* buffer, int size){ int *p; p = (int *) malloc(size*sizeof(int)); if (p !=0) ... 阅读全文
posted @ 2012-01-06 15:19 balaamwe 编辑
摘要:http://bbs.byr.cn/pc/pccon.php?id=315&nid=68136写程序时用malloc竟然出现段错误,而且明显那块没有用错,肯定是别的地方有内存泄漏的问题,导致最后内存泄漏了。需要好好查一查原因了。但程序中很多地方都用来malloc,内存全是随便用的,要改起来估计十分麻烦。。。。下面找了点malloc与free的介绍,先看下,然后赶紧改代码。在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的malloc()和free()两个函数的了解甚少,只知道大概该怎么用——就是malloc然后free就一切OK了。当然现在对这两个函数的体会也不见得多, 阅读全文
posted @ 2012-01-06 14:26 balaamwe 编辑
摘要:转自http://www.cnblogs.com/owenliang/archive/2011/12/05/2276264.html众所周知, 因为现在各个UNIX分支均提供了高效了"I/O复用"接口, 比如Linux下常用的epoll, 支持N万连接仍可保证高效的事件通知 .也正是因为从以前select这种传统的事件驱动接口的存在, 所以依靠的事件驱动思想进行异步服务器开发的思想遍地开花 .Apache是靠进程/线程的数量来撑起并发接入量的, 也就是绝大多数初次接触网络编程的朋友常用的技巧, 一个Client对应一个Thread提供服务.但Apache随着时代的进步也在不 阅读全文
posted @ 2011-12-24 21:01 balaamwe 编辑
摘要:原文地址:http://blog.csdn.net/helenhf/archive/2007/03/20/1534573.aspx根据APUE,程序分为下面的段:.text, data (initialized), bss, stack, heap。data/bss/text:text段在内存中被映射为只读,但.data和.bss是可写的。bss是英文Block Started by Symbol的简称,通常是指用来存放程序中未初始化的全局变量的一块内存区域,在程序载入时由内核清0。BSS段属于静态内存分配。它的初始值也是由用户自己定义的连接定位文件所确定,用户应该将它定义在可读写的RAM区内 阅读全文
posted @ 2011-12-24 15:41 balaamwe 编辑
摘要:Linux系统中在应用程序运行过程中经常会遇到程序突然崩溃,提示:Segmentation fault,这是因为应用程序收到了SIGSEGV信号。这个信号提示当进程发生了无效的存储访问,当接收到这个信号时,缺省动作是:终止w/core。 终止w/core的含义是:在进程当前目录生成core文件,并将进程的内存映象复制到core文件中,core文件的默认名称就是“core”(这是Unix类系统的一个由来已久的功能)。 事实上,并不是只有SIGSEGV信号产生coredump,还有下面一些信号也产生coredump:SIGABRT(异常终止)、SIGBUS(硬件故障)、SIGEMT(硬件故障)、S 阅读全文
posted @ 2011-12-21 17:42 balaamwe 编辑
摘要:LinuxCore Dump 配置与调试1.core文件的生成开关和大小限制---------------------------------1)使用ulimit-c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。2)使用ulimit-cfilesize命令,可以限制core文件的大小(filesize的单位为kbyte)。若ulimit-cunlimited,则表示core文件的大小不受限制。如果生成的信息超过此大小,将会被裁剪,最终生成一个不完整的core文件。在调试此core文件的时候,gdb会提示错误。2.core文件的名称和生成路径------ 阅读全文
posted @ 2011-12-21 17:41 balaamwe 编辑
摘要:http://haobing2005.blog.163.com/blog/static/466678620097180467346/今天调试一个程序, 用到了core dump, 但是不知道是做什么用的,查了一下,明白了些, 记于此.什么是Core Dump?Core的意思是内存, Dump的意思是扔出来, 堆出来.开发和使用Unix程序时, 有时程序莫名其妙的down了, 却没有任何的提示(有时候会提示core dumped). 这时候可以查看一下有没有形如core.进程号的文件生成, 这个文件便是操作系统把程序down掉时的内存内容扔出来生成的, 它可以做为调试程序的参考.core dum 阅读全文
posted @ 2011-12-21 17:40 balaamwe 编辑
摘要:何谓 core? 在使用半导体作为内存的材料前,人类是利用线圈当作内存的材料(发明 者为王安),线圈就叫作 core ,用线圈做的内存就叫作 core memory。如今 ,半导体工业澎勃发展,已经没有人用 core memory 了,不过,在许多情况下, 人们还是把记忆体叫作 core 。 何谓 core dump? 我们在开发(或使用)一个程序时,最怕的就是程序莫明其妙地当掉。虽然系 统没事,但我们下次仍可能遇到相同的问题。于是这时操作系统就会把程序当掉 时的内存内容 dump 出来(现在通常是写在一个叫 core 的 file 里面),让 我们或是 debugger 做为参考。这个动作就 阅读全文
posted @ 2011-12-21 17:40 balaamwe 编辑
摘要:转载自http://www.aspdao.com/5180.htmlLinux下Makefile的automake生成全攻略文/余涛 作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便。一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了。 在本文中,将给大家介绍如何使用autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常见的GNU程序一样,只要使用“./configure”,“mak... 阅读全文
posted @ 2011-12-08 18:31 balaamwe 编辑
摘要:大端模式与小端模式一、概念及详解 在各种体系的计算机中通常采用的字节存储机制主要有两种: big-endian和little-endian,即大端模式和小端模式。 先回顾两个关键词,MSB和LSB: MSB:Most Significant Bit ------- 最高有效位 LSB:Least Significant Bit ------- 最低有效位 大端模式(big-edian) big-endian:MSB存放在最低端的地址上。 举例,双字节数0x1234以big-endian的方式存在起始地址0x00002000中: | data |<-- address | 0x12 ... 阅读全文
posted @ 2011-10-29 18:57 balaamwe 编辑
摘要:htons、htonl、ntohl、ntohs是用来在网络字节顺序和本机字节顺序之间相互转换的函数。可以这么理解:n :network;h :host;s:short;l:longhtons :host to network short型,依次类推。具体用法为:htons:htons( u_short hostshort);hostshort:主机字节顺序表达的16位数。注释:本函数将一个16位数从主机字节顺序转换成网络字节顺序。返回值:htons()返回一个网络字节顺序的值。其余的同理。struct sockaddr_in servaddr;bzero(&servaddr,sizeo 阅读全文
posted @ 2011-10-29 18:57 balaamwe 编辑