mysql_init();主要是在做什么,申请了堆内存吗?
mysql_close();对应init还是mysql_real_connect,

解决方案 »

  1.   

    mysql_init();初始化一个msyql对象,申请内存,初始化一些变量。mysql_real_connect().
    进行连接。mysql_close()
    关闭连接,并同时释放对象。所以说它对应于上面两个步骤。
      

  2.   

    汗,我居然在自己帖子看不到别人的回复,点击结贴给分才能看到mysql_init(); 初始化一个msyql对象,申请内存,初始化一些变量。 
    ------
    不准确
    MYSQL *         STDCALL mysql_init(MYSQL *mysql);
    这个函数通过你的传参来决定是自动申请空间还是用户自己提供
    我现在看到2种初始化的例子
    MYSQL mysql;
    mysql_init(&mysql);和
    MYSQL *mysql;
    mysql=mysql_init(NULL); 
    mysql_real_connect(). 
    进行连接。 mysql_close() 
    关闭连接,并同时释放对象。所以说它对应于上面两个步骤。 
    ----
    根据是否malloc空间,MYSQL结构有个成员标示是否释放
      my_bool       free_me;                /* If free in mysql_close */
    这样还有个疑问,如果mysql_real_connect失败或query失败是否要mysql_close()?
    看有些书上这些情况没有mysql_close()
      

  3.   

    准确的说话你要参考一下官方手册了。MYSQL *mysql_init(MYSQL *mysql) Description Allocates or initializes a MYSQL object suitable for mysql_real_connect(). If mysql is a NULL pointer, the function allocates, initializes, and returns a new object. Otherwise, the object is initialized and the address of the object is returned. If mysql_init() allocates a new object, it is freed when mysql_close() is called to close the connection. 分配或仅初始化一个MYSQL对象用于 mysql_real_connect() 操作。如果传入*mysql为NULL,则会内存分配,初始化然后返回这个对象。否则,将传入的*mysql进行初始化。 如果是由mysql_init()分配生成的MYSQL对象,则当执行mysql_close()来关闭connection 的时候,会被释放。
      

  4.   

    void mysql_close(MYSQL *mysql) Description Closes a previously opened connection. mysql_close() also deallocates the connection handle pointed to by mysql if the handle was allocated automatically by mysql_init() or mysql_connect(). 
    关闭一个打开的连接。mysql_close()同时也释放mysql如果是由mysql_init() 或 mysql_connect()自动分配的。  个人翻译,非官方版本,仅仅参考。