检查一下你的sql语句有没有缓冲区溢出.你那个错误是内存访问违例,一般是内存越界了造成的

解决方案 »

  1.   

    sprintf()格式化的字符数组是正确的,我用MessageBox输出的到正确的sql语句。只是mysql参数
    的变化让我不懂:
    BOOL CDatabase::FindSave(char *str)
    {
            if(mysql_query(&mysql,str))//前面几次调用&mysql内容都正确,之后参数mysql地址改变了,内容都空了,引发以上错误!
                    return false;
            query=mysql_store_result(&mysql);
            return true;
    }
      

  2.   

    debug的时候step by step,watch一下mysql是在那一步改变的.
      

  3.   

    slashjojo(slayer),就是在函数入口处查看的mysql,但是我几次调用都是在一个函数作用域中的,前几次都没问题。真是让人费解的
      

  4.   

    我觉得 slashjojo(slayer) 指出的问题可能性最大。char str[80]; 这种写法是典型的“缓冲区溢出”问题的隐患。你就先确认一下生成的 str 字符串的长度嘛。
      

  5.   


    还有内存泄漏http://community.csdn.net/Expert/topic/4920/4920395.xml?temp=.3051874