iCAx开思工具箱

标题: 内存冲突 [打印本页]

作者: 刘亮    时间: 2004-9-8 11:09
标题: 内存冲突
我想用程序查询当前显示部件的表达式的值,再乘一个系数来改变表达式的值,执行时出现如附件所示的错误,兄弟们,帮我看看阿,该要释放的内存
我都UF-free了阿。高手,是什么问题阿
代码如下:
  
  static double UF_MODL_ask_exp_value(char *exp_str) //得到一个EXPRESS表达式的值
{
  tag_t exp_tag;
  char *l_str,*r_str;
  double value;
    UF_MODL_dissect_exp_string(exp_str,[$l_str,&r_str,&exp_tag)]
  UF_free(l_str);
    UF_free(r_str);
  if(!UF_MODL_ask_exp_tag_value(exp_tag,&value))
  return value;
  else  
  return 0.0;
  
}
  
//----------------------------------------------------------------------------
//  Activation Methods
//----------------------------------------------------------------------------
  
//  Unigraphics Startup
//      This entry point activates the application at Unigraphics startup
extern "C" DllExport void ufsta( char *param, int *returnCode, int rlen )
{    int number_of_exps,i;
     
  tag_t *exps;
  char *string,*string1;
   tag_t part_tag;
   double* a;
   double b;
  
    /* Initialize the API environment */
    int errorCode = UF_initialize();
  
    if ( 0 == errorCode )
    {
        /* TODO: Add your application code here */
  
    part_tag=UF_PART_ask_display_part();//查询部件的标识
  UF_MODL_ask_exps_of_part( part_tag,[$number_of_exps,&exps)]//根据部件的标识获得所有表达式的标识
  for(i=0;i<number_of_exps;i++)
  {
  UF_MODL_ask_exp_tag_string(exps,[$string)]//利用表达式标识获得表达式字符串
      a=UF_MODL_ask_exp_value(string);//利用表达式字符串获得表达式的右值
  
   UF_free(string);
  }
  UF_free(exps);
    b=3*a[1];
    
  sprintf(string1,"p1=%f",b);
  string=string1;
  
  UF_MODL_edit_exp(string);
  UF_MODL_update();
  
        /* Terminate the API environment */
        errorCode = UF_terminate();
作者: csftiger    时间: 2004-9-8 12:32
string1没Malloc空间,就sprintf(string1,"p1=%f",b); 当然出错了。
C语言的问题
作者: 刘亮    时间: 2004-9-8 15:05
说得有道理,我试一试,好郁闷,c都没有学好,还要做二次开发!!!
谢谢仁兄!!!




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3