C++ 识别指针处理方式中的错误

C++ 识别指针处理方式中的错误,c++,pointers,C++,Pointers,这个问题需要我识别指针处理方式中的错误。 我试着编译它,但它没有给出任何错误 #include <iostream> using namespace std; int main() { int *ptr = new int; int *ptr2 = ptr; delete ptr; ptr = NULL; return 0; } #包括 使用名称空间std; int main() { int*ptr=新的int; int*ptr2=ptr; 删除ptr; ptr

这个问题需要我识别指针处理方式中的错误。 我试着编译它,但它没有给出任何错误

#include <iostream>
using namespace std;
int main()
{
  int *ptr = new int;
  int *ptr2 = ptr;
  delete ptr;
  ptr = NULL;
  return 0;
}
#包括
使用名称空间std;
int main()
{
int*ptr=新的int;
int*ptr2=ptr;
删除ptr;
ptr=NULL;
返回0;
}

如果您将代码放入
main
方法中并编译它
valgrid
不会给您任何错误。你在找什么

valgrind—泄漏检查=完全。/a.out

==22277==Memcheck,内存错误检测器

==22277==2002-2013年版权(C)和GNU GPL'd,朱利安·苏厄德等人

==22277==使用Valgrind-3.9.0和LibVEX;使用-h重新运行以获取版权信息

==22277==命令:./a.out

==22277==

==22277==

==22277==堆摘要:

==22277==在出口处使用:0块中的0字节

==22277==总堆使用率:1个allocs,1个free,分配了4个字节

==22277==

==22277==所有堆块都已释放--不可能存在泄漏

==22277==

==22277==对于检测到的和抑制的错误计数,请使用:-v重新运行

==22277==错误摘要:0个上下文中的0个错误(已抑制:6中的8个)

我猜您错过了“int main()”行

#包括
使用名称空间std;
int main()
{
int*ptr=新的int;
int*ptr2=ptr;
删除ptr;
ptr=NULL;
返回0;
}

为什么您希望显示的代码会出错?你认为会出现什么样的错误?为什么你认为这不应该编译?如果要避免使用指向已删除内存的指针,则应使用智能指针。此代码错误且无法编译。你是如何编译的?你的平台是什么?您使用哪种IDE?你使用哪种编译器?您认为此代码有什么问题?@alifadulrahman它不会给您错误,因为在提供的代码中没有要报告的错误。如果在
删除后使用
ptr2
,则会出现问题。由于未使用
ptr2
,因此代码没有问题。它不会给出错误,因为新闻数==删除数。但是如果您尝试使用其中一个指针,特别是已分配但未被置空的指针。。。。
#include <iostream>
using namespace std;
int main()
{
   int *ptr = new int;
  int *ptr2 = ptr;
  delete ptr;
  ptr = NULL;
  return 0;
}