C/c++程序经过编译连接后形成的二进制映像文件,这文件包含: 栈,堆,数据段(只读数据段,已经初始化读写数据段,未初始化数据段即BBS)和代码段组成. 1.栈区(stack): 由编译器自动分配释放,存放函数的参数值,局部变量等值。其操作方式类似于数据结构中的栈。 2.堆区(heap): 堆允许程 ...
分类:
其他好文 时间:
2018-10-09 20:01:02
阅读次数:
135
1、什么是闭包? 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。闭包的特点: 1. 作为一个函数变量的一个引用,当函数返回时,其处于激活状态。 2. 一个闭包就是当一个函数返回时,一个没有释放资源的栈区。 简单的说,Ja ...
分类:
编程语言 时间:
2018-10-07 10:39:39
阅读次数:
161
字符串常量:char* a = "hello world"; 首先,操作系统在编译器规划内存方案中的的文字常量区分配一段内存,存储"hello world"字符串,然后在栈区分配一个内存,存储"hello world"字符串所在内存的首地址,字符串常量一旦分配是不允许修改的,即a[2]=’E’是错误 ...
分类:
其他好文 时间:
2018-09-25 14:07:34
阅读次数:
135
java虚拟机内存 笼统分为两部分:堆区,栈区 其中,引用在栈区,对象在堆区 详细分为五部分:堆区,虚拟机栈区,本地方法栈区,方法区,程序计数器 cpython解释器内存 笼统分为两部分:堆区,栈区 其中,引用(或者叫变量or变量名)在栈区,底层c语言实现实际上是一个PyObject*类型的指针;对 ...
分类:
编程语言 时间:
2018-09-12 22:54:27
阅读次数:
226
1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 3、全局区(静态区)(stat ...
分类:
其他好文 时间:
2018-09-09 14:58:00
阅读次数:
126
数组静态分配内存,链表动态分配内存; 数组在内存中连续,链表不连续; 数组元素在栈区,链表元素在堆区; 数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n); 数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)。 ...
分类:
编程语言 时间:
2018-09-05 17:37:38
阅读次数:
169
写C/C++程序最怕出现这样的提示了,还好是在调试环境下显示出来的,在非调试状态就直接崩溃退出. 从上述汇编代码发现在取内存地址 eax+38h 的值时出错, 那说明这个地址非法呗, 不能访问, 一般是访问了空指针引起的. 直接调用QList::append()方法也会出错了, 此时汇编也指向的是在 ...
分类:
数据库 时间:
2018-09-05 09:09:26
阅读次数:
266
block原理 block的本质是一个结构体,包含引用的外部变量及一个需要执行的函数的函数指针,在内存中可以有三个位置,即堆上、栈上和全局区(静态区)。当block中没有引用外部变量时,block的位置在全局区,当block中访问外部变量时,MRC下block默认在栈区,ARC下block默认会从栈 ...
分类:
其他好文 时间:
2018-09-04 19:09:20
阅读次数:
246
1、什么是闭包 闭包,官方对闭包的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。 闭包的特点: 1. 作为一个函数变量的一个引用,当函数返回时,其处于激活状态。 2. 一个闭包就是当一个函数返回时,一个没有释放资源的栈区。 简单的说,Ja ...
分类:
编程语言 时间:
2018-08-16 19:39:45
阅读次数:
186
首先是操作系统将代码程序加载到内存中 然后将内存分为4个区 栈区,程序的局部变量区,函数传递的参数,由编译器自动进行内存资源的释放。 堆区,动态内存申请,如果不手动释放内存,则这块内存不会进行析构。 全局区,静态区,常量区(字符串存放的位置),程序结束后,有操作系统释放 代码区,存放函数体的二进制代 ...
分类:
编程语言 时间:
2018-08-02 12:52:23
阅读次数:
165