正在清除C++中的内存问题
Clearing memory issue in C++
我有一个C++代码,可以生成随机的3D网络结构。我工作得很好,如果我手动运行它(从终端),我会得到两种不同的结构,正如预期的那样。
然而,如果我创建一个小循环,连续启动它10次,它会产生10次完全相同的结构,这是不正常的。如果我在代码末尾添加一行sleep(1)
,它就会再次工作,所以我想这与C++释放内存有关(我绝对不是一个期望,所以我可能完全错了)。
问题是,通过添加sleep(1)
命令,运行所需的时间要多得多(增加了10倍)。这当然不是10次跑步的问题,但目标是达到1000次。
有没有办法强制C++在代码末尾释放内存
C++根本不会自动释放内存(析构函数中的代码除外),所以情况并非如此。
但是随机数生成器使用系统时钟计数器(我可能错了)。在pascal语言中,您应该调用randomize
过程来初始化带有种子的随机生成器。如果不这样做,随机数生成器每次运行都会产生相同的结果,这与的情况非常相似
在C++中,有一个srand
函数,它通常由当前时间初始化,就像在那里的例子一样http://en.cppreference.com/w/cpp/numeric/random/rand
我不知道你是如何初始化你的rand生成器的,但如果你这样做的时间分辨率是秒,并且你的代码足够快,可以在一秒钟内完成10个循环,这可能是一种情况。它解释了1秒延迟是如何修复这种情况的。
如果是这样的话,你可以尝试一个分辨率更大的时间函数。此外,在c++11stl中,有很多powerfull随机模块(如果没有c++11x,则与boost库一样)。文档在这里http://www.cplusplus.com/reference/random/
- C++ 中 std::vector 的内存问题
- 实现快速排序的内存问题
- 此add_node函数会导致内存问题吗?
- C++:为什么这段代码给我内存问题/未定义的行为?
- 我不明白附加字符串的内存问题
- 是否有可能存在不会崩溃程序的内存问题
- 在发布版本中删除类指针会导致内存问题
- Android OpenCV 应用程序的内存问题
- 线程的内存问题(微小线程,C++)
- 递归结构的向量有内存问题
- C++合并排序内存问题
- 将智能指针发送到Protobaf.内存问题
- 潜在的动态内存问题
- JNI 中的内存问题
- C++Lambda函数关闭-内存问题
- 解决由全局静态变量引起的内存问题
- 类堆栈内存问题(致命错误)
- QNetworkAccessManager内存问题
- 读取进程内存问题未更新
- 类指针内存问题