zoukankan      html  css  js  c++  java
  • C语言遇到的小问题

    32为Linux主机下的C语言内存情况

    -----------------------------------------------------------          4G(0xffff ffff)

    内核空间              应用程序不许访问

    ------------------------------------------------------------         0xC000 0000

     栈空间                 RW           局部变量保存位置            

    -------------------------------------------------------------

    运行时堆空间                           malloc

    --------------------------------------------------------------

    全局的数据空间     RW     (初始化的(data)、未初始化的(bss))     data    bss

    代码段(只读)           R                code                                text

    ---------------------------------------------------------------0x0804 8000
    ---------------------

    堆栈区内存大小,缺省值 2M或者4M,如果char够用,你就按照char去开,就只有int的1/4啦

    当然我们开全局变量和malloc也是能用的,因为被OS接管了,所以acmer经常爆栈

    printf("%s",s[i])不能运行

    case 's':
    s = va_arg(args, char *);
    if (!s)    s = "<NULL>";
    len = strnlen(s, precision);
    if (!(flags & LEFT)) while (len < field_width--) *str++ = ' ';
    for (i = 0; i < len; ++i) *str++ = *s++;
    while (len < field_width--) *str++ = ' ';

    给定字符就会访问字符所在ascii值得内存空间,就炸了

    导致程序运行崩溃有以下几种可能:非法内存地址访问,访问越界,堆栈溢出

    堆栈,函数调用时入栈的顺序 是参数 函数地址 局部变量

    拉链法和开放定址比较


    拉链法:处理冲突简单,无堆聚现象,同时链表插入、删除操作简单,所以拉链法适合经常进行插入、删除操作的情况。


    开放定址法:为了减少冲突,要求负载因子(装填因子)较小,当节点规模较大时候会浪费很多空间。且开放定址法在删除节点的时候,不能简单的将节点所在的空间置为空,否则将截断在它之后的节点的查找路径,这是因为各种开放定址法中,空地址单元都是查找失败的条件。因此在进行删除节点操作的时候,需要使用逻辑删除,即在被删除的节点上做删除标记。

  • 相关阅读:
    Asp.Net细节性问题精萃(转)
    开发OFFICE插件总结(转)
    校内网开心网数据同步引发的讨论(转)
    C++指针探讨 (三) 成员函数指针 (转)
    C++指针探讨 (二) 函数指针 (转)
    【原创】编程获取PE文件信息的方法(转)
    为.net开发者提供的一份关于存储过程的评论(转)
    C++指针探讨 (一)数据指针 (转)
    如何批量修改PPT字体、大小、颜色(转)
    搜索引擎里的爱人(转)
  • 原文地址:https://www.cnblogs.com/BobHuang/p/10810143.html
Copyright © 2011-2022 走看看