C++ 为什么这段代码会给出分段错误?
我写了一个小例子来测试我对指针和内存的理解,但我确信这会起作用,但它给出了seg错误。。。知道我做错了什么吗添加:我将此代码与其他代码一起运行。C++ 为什么这段代码会给出分段错误?,c++,pointers,segmentation-fault,C++,Pointers,Segmentation Fault,我写了一个小例子来测试我对指针和内存的理解,但我确信这会起作用,但它给出了seg错误。。。知道我做错了什么吗添加:我将此代码与其他代码一起运行。 #include <iostream> using namespace std; struct Card { int a; Card(int a) : a(a) { } }; int main() { int **p; int **p2; int *a; int b =3; char ** cArray
#include <iostream>
using namespace std;
struct Card {
int a;
Card(int a) : a(a) { }
};
int main() {
int **p;
int **p2;
int *a;
int b =3;
char ** cArray;
Card **c = new Card*[5];
for (int i = 0; i<5; i++)
c[i] = new Card(1);
a = &b;
for (int i = 0; i< 10; i++) {
p = &a;
// p2[i] = new int;
*(cArray + i) = "string";
cout << cArray[i]<< endl;
}
for (int i = 0; i< 10; i++) {
// p2[i] = a;
cout << *a << endl;
}
}
#包括
使用名称空间std;
结构卡{
INTA;
卡片(INTA):a(a){}
};
int main(){
int**p;
int**p2;
int*a;
int b=3;
char**cArray;
卡片**c=新卡片*[5];
对于(int i=0;icArray
未初始化。请更正此问题
char ** cArray = new char*[10];
cArray
未初始化。请更正此问题
char ** cArray = new char*[10];
cArray变量似乎未初始化。cArray变量似乎未初始化
char ** cArray;
cArray
是指向指针的未初始化指针。您不能取消引用它
*(cArray + i) = "string";
cArray
是指向指针的未初始化指针。您不能取消引用它
*(cArray + i) = "string";
它适用于我-您使用的是什么编译器和操作系统?您能发布实际的seg错误消息吗?@标记除内存泄漏外,代码没有问题。这不适用于我(在g++/Linux上).在这里可以正常工作…你确定你复制/粘贴正确吗?我找不到SEGFULT的来源。我认为这是因为卡,因为当我删除它时,SEGFULT消失了…它对我有效-你使用的是什么编译器和操作系统?你能发布实际的seg错误消息吗?@除了内存泄漏之外,标记代码没有问题。这是does不适合我(在g++/Linux上).在这里工作正常…你确定你复制/粘贴正确吗?我找不到segfault的来源。我认为这是因为卡,因为当我删除它时,segfault消失了…为什么当我从main中删除卡部件时没有seg fault?分段错误是具有未定义行为的运行时错误。如果你不走运,它会出现表现得好像一切都正常。为什么我从main中移除卡部件时没有seg故障?分段故障是具有未定义行为的运行时错误。如果您运气不好,则表现得好像一切都正常。