【c】C语言运算符优先级存在的问题和如何检测内存泄漏。

观察内存泄露是两步骤过程。可使用swap命令观察可用交换空间,一分钟内键入该命令三到四次,查看可用交换区是否减少。也能使用/usr/sbin/*stat工具,如netstat、vmstat等。若发现内存不断分配且不释放,可能有进程出现内存泄漏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C语言运算符优先级存在的问题
优先级问题表达式人们可能误以为的结果实际结果

.的优先级高于*

->操作符用于消除这

个问题

*p.f

p所指向的字段f

(*p).f

对p取f的偏移,作为指针然后进行解引用操作。*(p.f)
[]高于*

int *ap[]

指针数组

ap是指向int数组的指针int(*ap)[]ap是元素为int指针的数组int*(ap[])
函数()高于*int *fp()指针函数fp是函数指针,所指函数返回int

fp是个函数,返回int*

int*(fp())

==和!=高于位操作符(val&mask!=0)(val7mask)!=0val&(mask!=0)
==和!=高于赋值符c=getchar()!=EOF(c=getchar())!=EOF

c=(getchar()!=EOF)

算术运算符高于移位运算符msb<<4+lsb(msb<<4)+lsbmsb<<(4+lsb)

逗号运算符在所有运算符中的优先级最低

i=1,2i=(1,2)(i=1),2

 观察内存泄露是一个两步骤的过程,首先,使用swap命令观察还有多少可用的交换空间:

/usr/sbin/swap -s

total: 17228k bytes allocated + 5396k reserved = 2262k used,29548k available

在一分钟内键入该命令三到四次,看看可用的交换区是否在减少。还可以使用其他一些/usr/sbin/*stat 工具如netstat、vmstat等。如果发现不断有内存被分配且从不释放,一个可能的解释就是有个进程出现了内存泄漏。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值