【发布时间】:2020-03-17 14:02:42
【问题描述】:
我在第一个代码中遇到分段错误,但第二个代码运行良好,不知道如何?
如何复制指针并将其保存到另一个指针?
#include <iostream>
using namespace std;
int main() {
int *p;
int *p1;
*p1=7;
p=p1;
cout<<*p<<" "<<p;
return 0;
}
#include <iostream>
using namespace std;
int main() {
int *p1;
*p1=7;
int *p=p1;
cout<<*p<<" "<<p;
return 0;
}
//7 0x7ffeea73db70
【问题讨论】:
-
正如老话所说,“未定义的行为是未定义的”。他们中的一个跑了只是运气不好。
-
如何为指针
p和p1分配内存?! -
Related: (Why) is using an uninitialized variable undefined behavior? 严格意义上说不是指针,但UB也一样。
-
即使您没有尝试将
7分配给*p1,这也是未定义的行为。你甚至不能复制一个未初始化的指针,更不用说取消引用它了。 -
@Yksisarvinen:那是 C,不是 C++。基本原理相似,但形式规则不同。
标签: c++ c++11 pointers copy c++14