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

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

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

    拉链法和开放定址比较


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


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

  • 相关阅读:
    layUI--实现分页
    maven项目-----Dynamic Web Module 3.0 requires Java 1.6 or newer
    js---open打开新窗口
    hibernate常见问题?
    eclipse如何修改dynamic web module version
    设计模式之五种创建型模式学习笔记
    设计模式学习笔记
    数据定义语言(DDL Data Definition Language)基础学习笔记
    idea安装成功后,设置字体、快捷键、配置jdk等操作
    基于Redis实现分布式锁
  • 原文地址:https://www.cnblogs.com/BobHuang/p/10810143.html
Copyright © 2011-2022 走看看