这个问题要我确定指针处理方式的错误。 我尝试编译它,但它没有给出任何错误。
#include <iostream>
using namespace std;
int main()
{
int *ptr = new int;
int *ptr2 = ptr;
delete ptr;
ptr = NULL;
return 0;
}
答案 0 :(得分:2)
我猜你错过了“int main()”行
#include <iostream>
using namespace std;
int main()
{
int *ptr = new int;
int *ptr2 = ptr;
delete ptr;
ptr = NULL;
return 0;
}
答案 1 :(得分:0)
如果您将代码放在main
方法中并对其进行编译valgrid
并未给您任何错误。你在找什么?
valgrind --leak-check = full ./a.out
== 22277 == Memcheck,内存错误检测器
== 22277 ==版权所有(C)2002-2013,以及Julian Seward等人的GNU GPL,
== 22277 ==使用Valgrind-3.9.0和LibVEX;用-h重新运行版权信息
== 22277 ==命令:./ a.out
== 22277 ==
== 22277 ==
== 22277 == HEAP SUMMARY:
== 22277 ==在退出时使用:0块中的0字节
== 22277 ==总堆使用量:1个分配,1个释放,4个字节分配
== 22277 ==
== 22277 ==所有堆块都被释放 - 没有泄漏可能
== 22277 ==
== 22277 ==对于检测到的和抑制的错误计数,请重新运行:-v
== 22277 ==错误摘要:来自0个上下文的0个错误(被抑制:8个来自6个)