- 论坛徽章:
- 0
|
这是《INFORMIX ESQL/C应用开发》书的一个例子,编写后出现了上述问题,主要部分的代码如下:
#INCLUDE "stdio.h"
$include sqlca.h;
$include sqlstype.h;
main()
{
exec sql begin declare section;
char fn[]="aaaa";
char ln[]="bbbb";
exec sql end declare section;
1 struct sqlda *descp;
2 $database stores_demo;
3 $prepare updateSta from "update customer set fname=?,lname=? where costomer_num=102";
4 $describe updateSta into descp;
5 $int count=2;
6 descp->sqlvar=(struct sqlvar_struct *)calloc(count,sizeof(struct sqlvar_struct));
7 descp->sqld=count;
8 desc[->sqlvar[0].sqldata=fn;
9 descp->sqlvar[0].sqltype=0;
10 descp->sqlvar[0].sqllen=20;
11 desc[->sqlvar[1].sqldata=ln;
12 descp->sqlvar[1].sqltype=0;
13 descp->sqlvar[1].sqllen=20;
14 $execute updateSta using descriptor descp;
15 $close database
}
以上程序esql可以通过,运行时候出现了memory fault问题。
检查发现主要是第6行为sqlvar分配内存时存在问题,大家帮忙分析一下怎么回事啊
刚接触esql/c,不是很熟悉,谢谢大家了! |
|