现象:执行脚本时,参数共200个取值,执行到91个取值的时候报错。执行脚本时报错如下:
Action.c(111): Error: C interpreter run time error: Action.c (111): Error -- memory violation : Exception ACCESS_VIOLATION received.
Action.c(111): Notify: CCI trace: Action.c(111): fopen(0x35383131, 0x033d06c6 "ab+")
分析解决:手动在页面上进行操作,发现有页面上有个查询字段为空。当该字段为空时,从关联中获取的取值allinfo会超过180个字符,因此最初定义的buffer数组内存分配有误,导致脚本报错。
char buffer[180]="";
strcpy(buffer,lr_eval_string("{allInfo}"));
解决方法:将数组定义修改为char buffer[200]=""; 即可。 PS:根据需要可以将数组长度设置更长一些。
解决问题思路参考:http://blog.csdn.net/dream_it_life/article/details/7988138
本文介绍了一种脚本执行过程中出现的错误及其解决方法。具体表现为在执行含有大量参数的脚本时发生的内存访问违规错误。通过分析,发现是由于特定条件下变量长度超出预期导致的内存溢出问题。最终通过调整缓冲区大小解决了该问题。
473

被折叠的 条评论
为什么被折叠?



