C++ 返回空C+时Eclipse崩溃+;

C++ 返回空C+时Eclipse崩溃+;,c++,eclipse,C++,Eclipse,我的代码有问题。当数组大小为0时,我希望返回null。但是,在Eclipse中进行测试时,它会崩溃。有什么建议吗 谢谢 #include <iostream> using namespace std; double* maximum(double* a, int size) { if (size == 0) { return NULL; } double* m = a; double* p = a; for (int i = 0; i

我的代码有问题。当数组大小为0时,我希望返回null。但是,在Eclipse中进行测试时,它会崩溃。有什么建议吗

谢谢

#include <iostream>
using namespace std;

double* maximum(double* a, int size)
{
   if (size == 0)
   {
      return NULL;
   }
   double* m = a;
   double* p = a;
   for (int i = 0; i < size; i++)
   {
      if (*p > *m)
      {
         m = p;
      }
      p++;
   }
   return m;
}

int main()
{
   double data[] = {};
 double* max = maximum(data, 0);
   cout << *max << endl;
   return 0;
}
#包括
使用名称空间std;
双*最大值(双*a,整数大小)
{
如果(大小==0)
{
返回NULL;
}
双*m=a;
双*p=a;
对于(int i=0;i*m)
{
m=p;
}
p++;
}
返回m;
}
int main()
{
双数据[]={};
double*max=最大值(数据,0);

cout取消对空指针的引用是非法的,您可以使用
取消对空指针的引用。在尝试访问指向的值之前,请检查它是否为空。Eclipse是否提供了一些调试信息而不是崩溃?取消对空指针的引用是不允许的,它会导致未定义的行为。不要这样做!
您是否正在取消引用从专门设计用于在您调用的情况下返回NULL的代码返回的指针。如果不取消对立即
NULL
的强制转换,您将很难找到对未定义行为的更直接的调用。@user3356901它的意思是
if(max)顺便说一句,不需要重新发明
std::max_元素
。你能举个例子说明如何解决这个问题吗?为了进一步澄清,OP似乎一直认为问题出在他的
最大值函数
上,或者他返回了
NULL
。唯一的问题正如你所说的。你不能取消对NULL的引用。@user3356901如果你是function可以返回NULL(而且可以,因为您已经专门对其进行了编码),在取消引用结果指针之前,您需要在调用者端进行检查。问题下面列表中的第5条注释是一种方法。@WhozCraig是Eclipse崩溃的,因为cout if(max!=NULL)cout