C语言内存布局

写这篇博客的初衷是我再整理图书的时候翻到一本介绍Linux的书上有介绍size命令.

size命令的输出不包括stack和heap的部分。只包括文本段(text), 代码段(data),未初始化数据段(bss)三部分。

示例:

vi hello.c

#include<stdio.h>

int main()

{

return 0;

}

wq保存之后,输入gcc -o a.out hello.c

[root@centos-linux ~]# size a.out

text data bss dec hex filename

1129......

100个GDB小技巧(一)

本文是100个GDB小技巧阅读总结,100个GDB小技巧.

列出函数的名字

在这个例子中源代码如下:

#include <stdio.h>

#include <pthread.h>

void *thread_func(void *p_arg)

{

while (1)

{

sleep(10);

}

}

int main(void)

{

pthread_t t1, t2;

pthread_create(&t1, NULL, thread_func, "Thread 1");

pthread_create(&t2, NULL......

GDB调试基本使用方法

文章转载自coolshell.cn,对相关内容根据自己理解有改动,原文请访问作者博客.

GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。

一般来说,GDB主要帮忙你完成下面四个方面的功能:

1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。

2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)

3、当程序被停住时,可以检......

crash工具总结

1、将/etc/yum.repos.d/centos-*.repo移到别处,新建一个 centos.repo文件

2、里面内容填写如下:

[base]]

name=ftp-server

baseurl=ftp://172.17.62.160/pub/centos6.6

enable=1

gpgcheck=1

gpgkey=ftp://172.17.62.160/pub/centos6.6/RPM-GPG-KEY-CentOS-6

保存文件退出

172.17.62.160是公司内部yum 源,在配置了172.17网段的虚拟机上可以方便安装.若在有外网权限的linux上,无需修改上......

C语言实现进度条功能

今天整理文件发现一个隐藏在硬盘角落里的一段神秘代码,运行之后发现这是一断让我打开眼界的程序。

#include <stdio.h>

#include <unistd.h>

int main()

{

int i;

for(i=0;i<=100;i+=10)

{

printf("Percent completed:%3d%%\r",i);

sleep(1);

fflush(stdout);

}

}

我们先在终端中运行该程序:

gcc -o func func.c

./func

程序会在同一行文件中打印 Percent comple......

Linux软连接与硬连接

1.Linux链接概念

Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。

命令格式:

ln -s source dist # 建立软连接

ln source dist # 建立硬连接

【硬连接】

硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件......

Linux程序设计Chapter10

#include <stdio.h>

#include <stdlib.h>

int main()

{

#ifdef DEBUG

printf("Compiled: " __DATE__ " at " __TIME__ "\n");

printf("This is line %d of file %s\n", __LINE__, __FILE__);

#endif

printf("hello world\n");

exit(0);

}

将代码保存为cinfo.c,......

python读书笔记

本文是python编程快速入门的读书笔记,仅记录python相关语言特性.

python编程快速入门预计4-5周时间读完,并完成编程实践练习.开始时间2017-06-22

导入模块 import

Python包括一组模块,成为标准库。每个模块都是一个python程序,包含一组组相关的函数,可以嵌入你的程序之中。

import random

for i in range(5):

print(random.randint(1,10))

from import语句

使用这种形式的import语句,调用random模块中的函数时不需要random.前缀。但是完整的名称会让代码......

Linux内核链表学习

本文参考内核代码2.6.9 List.h中相关代码,如有疑问欢迎评论.

链表

链表是线性表的一种,可以高效地在链表中的任意位置实时插入、删除数据。链表的开销主要是访问的顺序性和组织链的空间损失.

通常链表数据结构至少应包含两个域:数据域和指针域,数据域用于存储数据,指针域用于建立与下一个节点的联系。

内核代码2.6.9中链表结构定义如下:

struct list_head {

struct list_head *next, *prev;

};

这个结构跟我们之前看到的不太一样,没有数据域,这样做的好处是具备了通用型.

链表可以分为单链表、双链表、循环链表等多种类型,......

柔性数组

#include <stdio.h>

#include <malloc.h>

typedef struct _soft_array

{

int len;

int array[];//int array[0];两种形式

}SoftArray;

int main()

{

int i = 0;

SoftArray* sa = (SoftArray*)malloc(sizeof(SoftArray) + sizeof(int) * 10);

sa->len = 10;

for(i=0; i<sa->len; i++)

{

sa->array[......