识别指针处理方式的错误

时间:2018-03-08 15:05:38

标签: c++ pointers

这个问题要我确定指针处理方式的错误。 我尝试编译它,但它没有给出任何错误。

#include <iostream>
using namespace std;
int main()
{
  int *ptr = new int;
  int *ptr2 = ptr;
  delete ptr;
  ptr = NULL;
  return 0;
}

2 个答案:

答案 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个)