我正在尝试寻找无malloc系列。考虑一下我们有1000个测试用例。人们可能会忘记释放ptr。请帮我优化脚本。
Test(func_class,func1)
{
int i,j;
char* ptr = (char*) malloc(sizeof(char));
free(ptr);
}
Test(func_class,func1)
{
int i,j;
char* ptr = (char*) malloc(sizeof(char));
/ Memory Leak /
}
export MY_ROOT=`pwd`
_COUNT=0
pwd
_COUNT_WORD=0
filename=test.c
cat $filename | while read line
do
echo "Reading Line = $LINE"
for word in $line
do
_COUNT_WORD=$(($_COUNT_WORD+1))
echo $_COUNT_WORD $word
if [ "$word" == "malloc\(sizeof\(char\)\);" ]; then
_MALLOC_FLAG=1 #this part of the code is not reached
echo "Malloc Flag Hi"
echo $word[2]
fi
done
_COUNT_WORD=0
done
我在匹配malloc正则表达式时遇到了一些问题。我知道脚本需要进行大量修改,因为我们必须找到编写malloc的个人模式。
答案 0 :(得分:0)
还有其他方法可以检查:
使用awk:
awk '/malloc/ || /free/{count++;}END{printf "%d",count}' fileundertest
这将在文件中搜索“malloc”和“free”字样,并打印出计数。如果算数是偶数你可以说每个malloc都有免费的。
使用grep:
grep -c "malloc" fileundertest
这将计算文件
中的malloc单词类似地,
grep -c "free" fileundertest
列出行号
grep -n "malloc" fileundertest