美文网首页iOS 开发
数组在内存中的存储

数组在内存中的存储

作者: 指尖猿 | 来源:发表于2016-08-01 11:36 被阅读135次

int a[10];

首先每个int占4个字节,所有要为局部变量a申请40个字节的栈空间,要申请栈空间,就是把SP(栈指针)的值减去40,然后a就是指向(SP-40)的指针,a[0]的地址就是(SP-40),a[1]的地址就是(SP-36),a[2]的地址就是(SP-32),以此类推。当然这些地址的计算工作都是编译器在背后帮我们算好了,并存放在exe或dll文件里了。char i,a【10】也是一样的原理。

如果这样还是不明白的话,你可以在调试进断点的时候,右键源代码,选中“Go To Disassembly”进入汇编调试页。你可以看到,每个函数开始的时候都是有这几行:

push ebp //保存源指针的值,这里不用管它

mov ebp,esp //把栈指针的值赋值给ebp,在这个函数里面,都是通过这个ebp减去某个数值来操作局部变量的。

sub esp, D0h //这个函数要里总共要用到的栈空间,就是这句话申请的它的意思是"esp=esp-D0h".

int a[10];a[1]=1;

的汇编代码就是

mov dwordptr[ebp-28h],1

ebp就是原来的栈指针的值。

相关文章

  • 笔记:数组的内存分配 , 排序算法,数组和函数之间的关系

    #mark- 01-数组内存存储细节 //问题:变量和数组在内存中存储的区别? 注意作图分析内存 1.变量在内存中...

  • 数组注意点

    数组在内存中的存储 变量的内存寻址是从大到小,所以存储数据时会从高字节开始存储 数组存储的和变量相反,元素存储是从...

  • 性能优化(一):数据结构优化

    1.数组和链表 数组:是将元素在内存中连续的存储的,因为数据是连续存储的,内存地址连续,所以查找效率高,但是在存储...

  • java数组学习

    数组存储方式: 数组引用变量是存放在栈内存(stack)中,数组元素是存放在堆内存(heap)中,通过栈内存中的指...

  • 数据结构

    数据结构 数组 内存结构: 在内存中是一段连续的存储结构。优缺点: 由于是在内存中是连续的存储结构,所以数组在读取...

  • 20160710_Programming

    ------JAVA20160710------1、实际的数组对象存储在堆内存中,如果引用该数组对象的数组引用变量...

  • javascript第六章

    数组:内存中连续存储多个变量的存储空间, 一、声明数组: 1.声明一个空数组 ...

  • 数组

    数组:内存中连续存储多个变量的存储空间, 一、 声明数组: 1.声明一个空数组 ...

  • 数组(二)

    数组:内存中连续存储多个变量的存储空间, 一、 声明数组: 1.声明一个空数组 ...

  • 数组(二)

    数组:内存中连续存储多个变量的存储空间, 一、 声明数组: 1.声明一个空数组 ...

网友评论

    本文标题:数组在内存中的存储

    本文链接:https://www.haomeiwen.com/subject/ltvxsttx.html