何时依靠垃圾收集而何时不?

时间:2010-10-05 03:55:15

标签: c++ garbage-collection

如果我要多次做这种操作:

  res = mysql_perform_query(conn, "show tables");

  printf("MySQL Tables in mysql database:\n");
  while ((row = mysql_fetch_row(res)) !=NULL)
      printf("%s\n", row[0]);

我是否需要在每次操作结束时运行mysql_free_result(res);或依赖垃圾收集机制,为什么?

更新

我仍然没有清楚地看到如何判断某些数据结构是否需要根据现有答案进行清理。

1 个答案:

答案 0 :(得分:2)

在C ++中,永远不会。 C ++不是垃圾收集的。最接近的是RAII,它基本上包装了需要在析构函数中进行清理的对象中清理的东西。我不能给出进一步的细节,因为我并没有真正使用C ++。

顺便说一下:即使使用GC语言,GC也只适用于内存。 SQL连接,文件句柄等内容仍然需要显式清理。

底线:一旦完成,您总是需要清理。 (除非文档说不需要)