• 今天写了好些废代码,实现逻辑太烂了。现在头晕乎乎得。感觉有点累,这两天新学了点东西,来看看想得起点什么。

    首先在csdn看见了一个问题,往数组里面存储多于数组长度的数据会怎样,那位同学总结来总结去,好像没有总结出根源问题。于是,我学了栈。

    1、堆栈,的栈

    函数执行时,局部变量和形参和返回地址都存在栈里面。

    当调用函数,函数最后一个参数先被压入栈,直到第一个参数压入,然后是返回地址。递归是一个很好说明这个我问题的例子如下图。

      在图中,最下面的栈是最先调用的函数压入的,当调用新函数时,这些值是不可访问的。sp的值初始为-1,在移到下一个栈时,总是先加一在操作栈,这样可以使sp总是指向最后的一个地址。

    当数组被存到栈里面,已经为他分配好了空间,数组存储时,由低内存地址,顺序存到高内存地址,如果超过数组长度存储,就有可能改变上一个函数的参数,返回地址,于是会导致函数错误。

    数组最后一位时0 结尾,所以一个长度为4的整形数组,其内存大小其实时5 字节。

  • 相关阅读:
    android-studio add jar
    android-studio 下载
    fastjson对Date类型的格式化
    springboot多环境区分
    Docker开启远程访问
    docker中批量删除 tag为none的镜像
    项目无法依赖Springboot打出的jar
    Spring Boot使用Swagger2
    mysql表时间戳字段设置
    springMVC dubbo注解无效,service层返回空指针
  • 原文地址:https://www.cnblogs.com/dosu/p/12052099.html
Copyright © 2020-2023  润新知