C语言中,怎么用realloc函数缩小已经分配的内存空间呢?比如说:int *p=(int *)m

C语言中,怎么用realloc函数缩小已经分配的内存空间呢?比如说:int *p=(int *)m,第1张

int* p=(int*)malloc(15*sizeof(int))

p=(int*)realloc(p, 10*sizeof(int)) /耐漏/重新分配空间昌枣烂岩消

减少办法:使敬旦用#pragmapack(1)字节对齐结构;在结构可以包含不同类型的数据的地方使用联合;使用位字段而不是整数来存储标志和小整数;避免使用固定局瞎长度的字符数组来存储字符串,实现字符串池和使用指针。

programspace:程序空间,内存是计算机系统中一个主要部件,用于保存进程运行时的程序和数据,也称可执行存储器。在计算机中,内存空间一般是指主存储器空间(物理地址空间)或系统为一个用户程序分配内存空间。扩展内存空间的方法一般有增加内存大小和虚拟内存。

空间是与时间相对的一种物质客观存在形式,但两者密不可分,按照宇宙大爆炸理论,宇宙从奇点爆炸之后,宇宙的状态由初始的“一”分裂开来,从而有了不同的存在桐稿空形式、运动状态等差异,物与物的位置差异度量称之为“空间”,位置的变化则由“时间”度量。空间由长度、宽度、高度、大小表现出来。通常指四方(方向)上下。

是(row,col,value),这样把所有不为零的值组成一个向量。这种存储方式比二维数组节省了不少空间,当然还可以进一步节省,因为三元组里面row或者col重复存储了,一行或者一列存一次就行了,按这种思路走下去就是行压缩存储了。

那具体什么是行压缩存储呢?行压缩存储的思想就是,把所有不为零的值按行访问的顺序组成一个向量,然后再把每一行值不为0的列的下标存下来,这个两个向量的大小和档大稀疏矩阵中不为0的值得个数相同,当然要实现对行压缩矩阵的访问,还要把每一行的不为判咐0的列的下标在第二个向量中开始的位行冲竖置存下来,有人把这个叫做指针。有了这三个向量就可以实现对矩阵实现高效的按行访问了。行压缩存储比三元组优秀的不仅是空间的压缩,还有就是行访问时的高效。三元组如果是有序的,可以二分查找来访问一行,但是行压缩存储按行访问时的时间复杂度是常数级的。 大家可以参考下面这个行压缩矩阵示意图:


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12260849.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存