分割故障:11 - C功能
Segmentation fault: 11 - C function
我有"分割故障:11"与此代码,我找不到解决方案
static const int N = 512;
static const int M = 64;
static const int K = sizeof(int) * 8;
static const int SZ = N*M / K;
void readFromFile(int *v);
int main(void){
int v[SZ];
readFromFile(v);
}
void readFromFile(int *v) {
ifstream f;
f.open("...path/file.txt");
char c = f.get();
int i = 0;
while (f.good()) {
v[i] = c - '0';
c = f.get();
i++;
}
f.close();
}
我有一个int数组和一个用来填充数组的文件。这是一段用于填充cuda计算的int数组的代码。我用的是insight和nvcc
您的代码是N = 512
,您将v
声明为int v[N];
但是如果你的文件比N
有更多的字符,那么i
会比N
大,并且当你访问v
的无效索引时,会产生分割错误。
int i = 0;
while (f.good()) {
v[i] = c - '0';
c = f.get();
i++; //No checking if it is greater than N
}
实际上用
更好char c;
int i = 0;
while ((c=f.get())!=EOF) {
v[i] = c - '0';
i++;
}
您还应该检查i
的限制,以进一步减少错误。
相关文章:
- C ;使用lambdas在类中有条件地扩展功能(MWE的SEG故障)
- 我的班级功能的分段故障
- 类功能的分割故障
- 该功能的第二个调用中的分割故障
- 具有持久功能的JavaScript中的分割故障
- 功能本地静态为Windows XP生成故障代码
- 从C 中的功能返回时分割故障
- 分割故障,可能的原因:功能指针,多线程,STL地图等
- 简单的C++字符数组加密功能 - 段故障
- 功能结束后的 SEG 故障 (C++)
- 分段故障当char数组在功能中声明时
- 具有OPENCV的功能检测失败而seg故障
- 在C++故障中集成Goempertz功能
- QtCore,QMutex 类,锁定功能 - 堆栈溢出故障
- EOF功能故障
- Lambda功能,防止分段故障
- 虚拟功能故障
- 输出功能C++出现故障
- 单链表显示功能分段故障
- Winsock发送功能出现故障