g++编译成功,运行提示Segmentation fault (core dumped) vs可以正常运行,为什么呢
#include
#include
#include
#include
using namespace std;
int *move(int a,int b)
{
int *p;
p[0]=a+1;
p[1]=b+2;
return p;
}
int main()
{
int *a=move(2,3);
getchar();
return 0;
}
正确写法就是 int p = (int)malloc(2*sizeof(int));
正确写法就是:int p = (int ) malloc(2*sizeof(int));
#include
#include
#include
#include
using namespace std;
int *move(int a, int b)
{
int *p=new int(2);
p[0] = a + 1;
p[1] = b + 2;
return p;
}
int main()
{
cout << move(2,3)[0] << endl;
getchar();
return 0;
}
p没有初始化, g++下默认应该是0, 后面的赋值相当于操作空指针
可以new或者malloc
malloc返回的是指针,堆里面分配的,自然要赋值给int* p;int p[2],这样定义了,系统就已经分配了栈空间了,自然就可以直接用p[0],p[1]了。
p没有初始化,没有指向正确的内存空间
int *p; 定义指针,没有申请空间
这种情况下,先用malloc 分配内存
等使用完了free 掉
比如在使用函数后 free
int *p ;
p[0] = a + 1;
p 没有分配空间
int *p = new int(2);
不过main函数里最好要delete释放掉