int main()
{
MYSQL mysql;
for (;;)
{
//单线程模式 mysql_init()自动调用,线程不安全
mysql_library_init(0, NULL, NULL);//这个代码会把整个库的环境都准备好,多次调用,进程内存也是不变的
mysql_init(&mysql); //内存一直在增长,不断的产生开销
system("pause");
return 0;
}
int main()
{
MYSQL mysql;
//单线程模式 mysql_init()自动调用,线程不安全
mysql_library_init(0, NULL, NULL);//这个代码会把整个库的环境都准备好,多次调用,进程内存也是不变的
for (;;)
{
mysql_init(&mysql); //内存一直在增长,不断的产生开销
mysql_close(&mysql);//将空间释放掉了
}
mysql_library_end(); //内存缓慢的增长,进行清理 做一次就行
system("pause");
return 0;
}
当不加delete时,可以看到内存一直在上升
int main()
{
//使用指针 会出现内存泄露
mysql_library_init(0, NULL, NULL);
for (;;)
{
MYSQL* mysql = new MYSQL(); //new出来的要主动释放内存
mysql_init(mysql);
mysql_close(mysql);
//加上这一句代码,主动释放
//delete[]mysql;
}
mysql_library_end();
system("pause");
return 0;
}
加了delete时,稳定了
int main()
{
//使用指针 会出现内存泄露
mysql_library_init(0, NULL, NULL);
for (;;)
{
MYSQL* mysql = new MYSQL(); //new出来的要主动释放内存
mysql_init(mysql);
mysql_close(mysql);
//加上这一句代码,主动释放
delete[]mysql;
}
mysql_library_end();
system("pause");
return 0;
}
int main()
{
mysql_library_init(0, NULL, NULL);
for (;;)
{
//传一个0会自己生成空间,所以就不用delete了
//他内部是肯定实在堆中生成的,栈生成的空间不可以return出来,内部就销毁掉了
MYSQL* mysql = mysql_init(0);
mysql_close(mysql);
//如果还有delete就会报错,因为二次释放了
//delete[]mysql;
}
mysql_library_end();
system("pause");
return 0;
}
总结:一共有三种方法,选择自己最顺手的就行;
#include<iostream>
#include<mysql.h>
//int main()
//{
// MYSQL mysql;
// //单线程模式 mysql_init()自动调用,线程不安全
// mysql_library_init(0, NULL, NULL);//这个代码会把整个库的环境都准备好,多次调用,进程内存也是不变的
// for (;;)
// {
// mysql_init(&mysql); //内存一直在增长,不断的产生开销
// mysql_close(&mysql);//将空间释放掉了
// }
// mysql_library_end(); //内存缓慢的增长,进行清理 做一次就行
// system("pause");
// return 0;
//}
//int main()
//{
// //使用指针 会出现内存泄露
// mysql_library_init(0, NULL, NULL);
// for (;;)
// {
// MYSQL* mysql = new MYSQL(); //new出来的要主动释放内存
// mysql_init(mysql);
// mysql_close(mysql);
// //加上这一句代码,主动释放
// delete[]mysql;
// }
// mysql_library_end();
// system("pause");
// return 0;
//}
int main()
{
mysql_library_init(0, NULL, NULL);
for (;;)
{
//传一个0会自己生成空间,所以就不用delete了
//他内部是肯定实在堆中生成的,栈生成的空间不可以return出来,内部就销毁掉了
MYSQL* mysql = mysql_init(0);
mysql_close(mysql);
//如果还有delete就会报错,因为二次释放了
//delete[]mysql;
}
mysql_library_end();
system("pause");
return 0;
}
总结:一共有三种方法,选择自己最顺手的就行;