1

我在 cpp 中与 SOCI 合作

statement sql =
  (db.prepare << "insert into table(bunch of columns) "
      "values(:s,:e,:qs,:qe, :ts,:te, :qi, :ti,:tutr, :q_oc,:q_g, "
      ":q_ref, :t_loc, :t_org, :t_ref)",
    use(s, use(e), use(q), use(qutop),
    use(tart), use(top), use(qame), use(tame),
    use(utr), use(qoc), use(qrg), use(qref),
    use(toc), use(trg), use(tef));

这里 use() 中的所有变量都是批量输入的向量。

在使用

sql.execute(true);

该语句已执行,但分配的内存从未释放。

我有一个大约 1TB 的大文件,在执行这个文件时,我总是会出现内存溢出。有什么办法可以清除 sql.execute() 完成的内存分配。

现在我已经通过使用解决了

db << "insert into table(bunch of columns) "
      "values(:s,:e,:qs,:qe, :ts,:te, :qi, :ti,:tutr, :q_oc,:q_g, "
      ":q_ref, :t_loc, :t_org, :t_ref)",
    use(s, use(e), use(q), use(qutop),
    use(tart), use(top), use(qame), use(tame),
    use(utr), use(qoc), use(qrg), use(qref),
    use(toc), use(trg), use(tef);

但是因为我必须多次使用上述语句,我宁愿使用 statement.execute()

4

0 回答 0