我在运行代码时遇到分段错误,在push_back()函数中, 我的节目如下:
程序:
#include<iostream>
#include <vector>
using namespace std;
class Point
{
private:
int x, y;
int * p;
public:
Point(int x1, int y1) {
x = x1; y = y1;
*p = 1;
}
Point(const Point & p2) {
x = p2.x;
y = p2.y;
*p = 1;
}
};
int main()
{
Point p1(10, 15);
Point p2 = p1;
vector<Point> vec;
for (int i=0; i<10; i++)
{
vec.push_back(p2);
}
}
有人能否在上述程序中给出分段错误的原因???? 有人能否在上述程序中给出分段错误的原因????
答案 0 :(得分:5)
Point(int x1, int y1) {
x = x1; y = y1;
*p = 1; <<< allocate memory for this pointer first.
}
您正在取消引用未初始化的指针。
答案 1 :(得分:2)
如果你想直接修改它们的值,我建议公开x和y;它比让吸气剂和制定者更好地完成这项任务更好。同时,我建议修改你的代码:
int *p = new int;
执行此操作将为指针分配内存,然后您可以为其指定值。出于好奇,指针是什么?