Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.1Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


23.8.7.25 mysql_free_result()

void mysql_free_result(MYSQL_RES *result)

説明

mysql_store_result()mysql_use_result()mysql_list_dbs() などによって結果セットに割り当てられたメモリーを解放します。結果セットの処理が終了したら、mysql_free_result() を呼び出して、それが使用しているメモリーを解放する必要があります。

それを解放したあとに、結果セットにアクセスしようとしないでください。

戻り値

なし。

エラー

なし。


User Comments
  Posted by mickey on January 19, 2004
mysql_free_result() free the MYSQL_RES, but it didn't set result to NULL. When we want to check result in other code, we can set result as default NULL where after call mysql_free_result(), and Set result as default NULL before store it.

Example:

MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
res = NULL; // Set res as default NULL

mysql_init(&mysql);
mysql_real_connect(&mysql,"localhost","root","","test",0,NULL,0);
mysql_query(&mysql,"SELECT * FROM person WHERE no<\'10\'");
res = mysql_store_result(&mysql);
..... other code here.....
... maybe check res is NULL or not
.......
mysql_free_result(res);
res = NULL; // Set res as default NULL
....
mysql_close(&mysql);

////////////
// Notes:
If result is NULL, we call mysql_free_result(res) is ok.
If call mysql_free_result(res) more once, we can get an memory access error.

Example:(OK)
res = mysql_store_result(&mysql);
......
mysql_free_result(res); // call free result once
res = NULL;
....
mysql_free_result(res); // call free result more then once is ok, because we set res as default NULL when after call mysql_free_result()

Example:(BAD,ERROR)
res = mysql_store_result(&mysql);
......
mysql_free_result(res); // must call free result once
....
mysql_free_result(res); // call free result more then once is BAD, because res is unallocated now.

Sign Up Login You must be logged in to post a comment.