关于c/c++分割错误的问题
An issue about c/c++ Segmentation fault
我写了一个简单的程序来测试数组指针:
#include <iostream>
using namespace std;
int main(){
int (*array)[10];
int i, j;
for (i = 0; i < 10; i++){
for (j = 0; j < 10; j++)
array[i][j] = 1;
}
for (i = 0; i < 10; i++){
for (j = 0; j < 10; j++)
cout << array[i][j] << " ";
cout << endl;
}
return 0;
}
为什么c++会出现"分段错误"?顺便说一下,我的操作系统是ios x64。
谢谢川
array
是指向数组的指针,显然您已经知道了。但是,您从未为实际数组分配内存,即您的指针指向"无处"。您正在尝试访问不存在的东西,这通常会导致分割错误。
例如,可以声明一个实际的数组
int array10x10[10][10];
,让指针指向它
array = array10x10;
(更准确地说,指针现在指向array10x10
中第一个包含10个元素的子数组)。在此之后,您的代码将正常工作,这意味着通过访问array[i][j]
,您将间接访问array10x10[i][j]
。
如果你愿意,你也可以在动态内存中分配实际的数组
array = new int[10][10];
(只是别忘了在结尾加一个delete[] array
)
将array
声明为指针数组,然后将其用作数组的数组。
你必须声明它是多维的:
int array[10][10];
相关文章:
- 警告处理为错误这里有什么问题
- Project Euler问题4的错误解决方案
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 类C++中的函数问题(LNK2019和LNK1120错误)
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- 将鼠标悬停在问题上时与预期">"相关的代码错误
- posix_spawn():使用posix_scawn()时的错误处理问题
- 在 C++ 中使用正则表达式错误时出现问题 括号表达式中的范围无效
- 动态类的分段错误(家庭作业问题)
- C 模板错误问题
- isdigit 的分段错误问题
- 用于防止重复和语法错误问题的布尔数组
- 遇到错误问题:在'{'之前,预期的非限定 id 只是一个我需要的类的标头,只是不确定导致错误的原因
- 对象内部结构:解决分割错误问题
- 与我定义的类的成员有关的c++向量数据类型编译器错误问题
- 警告错误问题
- 使用 C++ 的代码块中的链接器错误问题
- 链接器错误问题
- 分段错误问题 # n
- 如何解决支持库中发生的分段错误问题