怎么减少 linux c程序内存占用

怎么减少 linux c程序内存占用,第1张

1. 在linux下,查看一个运行中的程序, 占用了多少内存, 一般的命令有

(1). ps aux:

其中 VSZ(或VSS)列 表示,程序占用了多少虚拟内存。

RSS列 表示, 程序占用了多少物理内存。

虚拟内存可以不用考虑,它并不占用实际物理内存。

(2). top 命令也可以

其中 VIRT(或VSS)列 表示,程序占用了多少虚拟内存。 同 ps aux 中的 VSZ列

RES列 表示, 程序占用了多少物理内存。同 ps aux 中的RSS列

2.在linux下, 查看当前系统占用了多少内存, 一般的命令是 free

其中, free就是系统还有多少内存可以使用。

但由于 linux 系统对内存使用有一个原则, 就是, 内存是宝贵的, 能使用多少就使用多少。 所以, linux会把已经调用过的包缓存起来,放在内存里。

这样,实际上,可以使用的内存,就可以理解为, free+buffers+cached

1) 最高位是符号位,0表示正数,1表示负数。

2) 如果是正数,正常表示(即原码),如果是负数,先求反码,再求补码(补码为反码加1)即为他的二进制表示。例如char型的1,用二进制表示为00000001;char型的-1用二进制表示为11111111。

常量,就是在程序运行过程中值无法被改变;变量,就是在程序运行过程中内部存储的值随时可以被改变。变量是“可读、可写”,而常量,是“只读”的。

整形常量:12、浮点型常量:12.35、实数型常量:1.3e-5、字符型常量:'a'、字符串型常量:"abc"、标识符常量:#define LEN 10。

变量一般存放在内存中:栈区, 静态数据区,全局变量区, 堆区。函数中定义的变量,如果不加特殊修饰,都是保存在栈区,函数调用结束,栈空间被自动释放。

定义变量:

<存储类型><数据类型><变量名>

static/auto/... int/char a

例如:static int a;char c;

存储类型:

自动类型转换

将一种类型的数据赋值给另外一种类型的变量时就会发生自动类型转换,例如:float a = 10;10是int类型的数据,需要先转换成float类型然后再赋值给变量a。

在不同类型的混合运算中,编译器也会自动地转换数据类型,将参与运算的所有数据先转换为同一种类型,然后再进行计算。转换的规则如下:

强制类型转换

自动类型转换是编译器根据代码自己判断的,有时候我们需要手动的进行数据类型转换,称之为强制类型转换,例如:

(int)(a+b)//将a + b 求得结果的数据类型强制转换为int型。

运算符的优先级

特殊运算符>单目运算符>双目运算符>三目运算>赋值运算>逗号运算


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存