易截截图软件、单文件、免安装、纯绿色、仅160KB

堆栈、linux c程序存储空间布局的总结

栈主要用来存放局部变量, 传递参数, 存放函数的返回地址.esp 始终指向栈顶, 栈中的数据越多, esp的值越小.
堆用于存放动态分配的对象, 当你使用 malloc , new 等进行分配时,所得到的空间就在堆中. 动态分配得到的内存附带有分配信息, 所以你能够 realloc 和 free调它们.
全局,静态和常量是分配在数据区中的。数据区包括bss和初始化区。
堆向高内存地址生长
栈向低内存地址生长
堆和栈相向而生,堆和栈之间有个临界点,称为stkbrk
CODE:
进程在内存中的影像.
      我们假设现在有一个程序, 它的函数调用顺序如下.
      main(...) ->; func_1(...) ->; func_2(...) ->; func_3(...)
      即: 主函数main调用函数func_1; 函数func_1调用函数func_2; 函数func_2调用函数func_3
      当程序被操作系统调入内存运行, 其相对应的进程在内存中的影像如下图所示.
        (内存高址)
        +--------------------------------------+
        |             ......                   | ... 省略了一些我们不需要关心的区
        +--------------------------------------+
        | env strings (环境变量字串)          | \
        +--------------------------------------+ \
        | argv strings (命令行字串)           |   \
        +--------------------------------------+    \
        | env pointers (环境变量指针)         |    SHELL的环境变量和命令行参数保


相关文档:

Linux学习(二).1(转)

1. 往/lib和/usr/lib里面加东西,是不用修改/etc/ld.so.conf的,但是完了之后要调一下ldconfig,不然这个library会找不到
2. 想往上面两个目录以外加东西的时候,一定要修改/etc/ld.so.conf,然后再调用ldconfig,不然也会找不到
比如安装了一个mysql到/usr/local/mysql,mysql有一大堆library在/usr/local/mysql/lib下面 ......

Linux下串口编程之二:读串口和写串口

1,打开串口
      /**打开串口,dev 串口设备名, mode 打开方式,**/
     int opendev(char *dev,mode_t mode)
    {
          int fd;
          fd = ......

C 标准库 函数 源代码的实现 和 分析

//库函数实现
char *strcat (char *dst, const char *src)
{
  char *p = dst;
  while (*p)
    p++;
  while ((*p++ = *src++))
    ;
  return dst;
}
char *strncat (char *s1, const char *s2, long unsigned int n)
{
  char *dest = s1;
  ......

C 发现个全局变量与局部变量的区别

发现个全局变量与局部变量的区别:
[code=C/C++]
char** t;
main()
{
    char c[1];
    char** t1;
    sprintf(c,"%d",t);
    printf("t=%s---\n",c);
    if(strcmp(c,"0")!=0)
  &nbs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号