mysql_init函數的錯誤使用情況


     先看看mysql_init函數的官方定義:

25.2.3.35. mysql_init()

MYSQL *mysql_init(MYSQL *mysql)

描述

分配或初始化與mysql_real_connect()相適應的MYSQL對象。如果mysqlNULL指針,該函數將分配、初始化、並返回新對象。否則,將初始化對象,並返回對象的地址。如果mysql_init()分配了新的對象,當調用mysql_close()來關閉連接時。將釋放該對象。

返回值

初始化的MYSQL*句柄。如果無足夠內存以分配新的對象,返回NULL

錯誤

在內存不足的情況下,返回NULL。(來自:http://dev.mysql.com/doc/refman/5.1/zh/apis.html#mysql-init)

正確使用方法:

    MYSQL mysql;
    mysql_init(&mysql);

錯誤使用方法:

    MYSQL *mysql;
    mysql_init(mysql);

其錯誤的原因類似於:

#include<stdio.h>
void fun1(int *a) {
    a = (int*) malloc(sizeof(int));
    *a = 9;
}
int main() {
    int *B = 0;
    fun1(B);
    printf("B=%d\n", *B); //B的值並未改變
    return 0;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM