C ++全局对象变量内存释放

时间:2017-11-26 08:42:00

标签: c++

拨打@TestFactory Stream<DynamicTest> shouldReturnGoodResultsForPositiveNumbers(){ // look at method name lol List<Integer> inputs = new ArrayList<>(Arrays.asList(2, 15)); List<String> outputs = new ArrayList<>(Arrays.asList("10", "1111")); return inputs.stream().map(number -> DynamicTest.dynamicTest("Test positive " + number, () -> { int idx = inputs.indexOf(number); decimal.setNumber(inputs.get(idx)); assertEquals(outputs.get(idx), decimal.toBinary()); })); } 是否安全? test(s2)的记忆会被释放吗?如果没有,有什么建议吗?

test(s1)

2 个答案:

答案 0 :(得分:3)

这一行

global = nlohmann::json::parse(js_string);

重新分配全局以获得新值。唯一可能泄漏任何内容的方法是nlohmann::json的赋值运算符是否有问题。

我怀疑情况并非如此。你不必担心泄漏。

答案 1 :(得分:1)

如果test(s1);test(s2);work_loop抛出异常,则可以终止进程而不调用global的析构函数(对于两个字符串也是如此),因为有没有异常处理。这无法真正导致内存泄漏,因为系统将回收进程内存,但是如果清理涉及其他操作(例如删除临时文件或关闭网络连接),则可能会导致实际问题。