在64位NASM中,我使用C库中的malloc()分配了一个8000字节的内存块,当我完成它时,我通过调用free()来释放它。我之所以发布这个问题,是因为我不想测试它,并且分配了一个内存块,但没有释放。 (1) do I have this right for 64-bit NASM?(2) is the syntax the same for Windows and Linux?我只展示了我的程序的malloc和免费部分:extern free
; Allo
然后,在循环结束时只释放一次缓冲区:在这种情况下,valgrind不会产生任何错误(不会发生泄漏)。同样,缓冲区仅在循环结束时释放一次,但在本例中,valgrind报告内存泄漏。实际上,让程序运行并查看RSS,我可以看到它随着循环的进行而增加。请注意,在循环中添加一个空闲(每个循环释放缓冲区)问题就会消失。这是密码。blocks are definitely lost in loss record 1 of 1
==9604== at 0x483DFAF: realloc (in /usr/lib/x86
instead of deleting buffer here.此外,我不认为调用析构函数会释放内存,所以当我在调用析构函数后分配aNumber时,我认为这是可以的。当我说内存没有被释放时,我的意思是例如,如果我有一个vector<Animal>,vector调用了vector[0]的复制赋值操作符,vector[0]动物会调用它自己的析构函数,然后分配aNumber,但是内存是由向量管理的(它没有被释放)。内存没有被释放,我说得对吗?