引言:
一个写好的程序一般要存放在存储器中,那么程序中的代码、数据等各部分,是如何有规律的存放在存储器中的呢?
(一)
一个存储的程序可分为五部分:正文段、初始化数据段、非初始化数据段、栈、堆。其典型的存储安排如下图:
正文段:这是由CPU执行的机器指令的部分。通常,正文段是可共享的,所以即使是频繁执行的程序在存储器中也只需要一个副本,另外正文段常常是只读的,以防止程序由于意外而修...
分类:
系统相关 时间:
2014-05-14 21:42:57
阅读次数:
604
我们分别从存储分配方式、时间性能、空间性能三方面来做对比。
存储分配方式:
顺序存储结构用一段连续的存储单元依次存储线性表的数据元素。
单链表采用链式存储结构,用一组任意的存储单元存放线性表的元素。
时间性能:
查找
顺序存储结构O(1)
单链表O(n)
插入和删除
顺序存储结构需要平均移动表长一半的元素,时间为O(n)
单链表在计算出某位置的指针后,插入和删...
分类:
其他好文 时间:
2014-05-14 14:16:42
阅读次数:
335
char* psize=malloc(sizeof(char)*100)
返回的可用空间不止100个字节,这是因为
分配的内存块前面有4 或8个字节用来存储分配的内在空间的信息。
所以,如果假设前30个字节有效,释放后70个字节时, free(psize +30)这样的写法是错误的,因为首地址p后移30字节后,还是去读紧邻羞的前面的4或8个字节来确定后面的内存信息。
而 cha...
分类:
其他好文 时间:
2014-05-11 21:49:57
阅读次数:
306
1。结构的存储分配12printf("%d
\n",sizeof(char));printf("%d \n",sizeof(int));int 类型为4B char 为1B1234567struct
sa{char a;int b;char c;};12345678struct sa{char c;...
分类:
其他好文 时间:
2014-05-01 04:07:14
阅读次数:
350
1. Java中堆栈(stack)和堆(heap)(1)内存分配的策略
按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的.
静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间.这种分配策略要求程序代...
分类:
编程语言 时间:
2014-04-30 01:15:52
阅读次数:
624