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值得内存空间,就炸了

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

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

    拉链法和开放定址比较


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


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

  • 相关阅读:
    新建winform项目,在其中拖入2个button和1个 PictureBox,1Openfiledialog用Graphics\pen\brush\color\Font\的属性画出不同图案 .
    在TSQl中使用变量,事务,系统存储,自定义存储
    在网页中使用.ascx用户控件的两种方法 .
    母版页label值在内容页label中显示 .
    在网页上显示用户控件上学选择的内容(例子省市选择器) .
    WebConfig常用配置文件
    #网页中动态嵌入PDF文件/在线预览PDF内容#
    海盗分宝石逻辑题目
    骆驼吃香蕉问题
    JDeveloper中安装junit扩展
  • 原文地址:https://www.cnblogs.com/BobHuang/p/10810143.html
Copyright © 2011-2022 走看看