为什么我会收到分段错误?
Why am I getting segmentation fault error?
我正在编写一个 C++ 程序,需要将数字从十进制转换为二进制。这是我的代码:
int* convertToBinary(int i, unsigned int n) {
int ans[10000];
if (n / 2 != 0) {
convertToBinary(i + 1, n / 2);
}
ans[i] = n / 2;
return ans;
}
void send_number(int num) {
for (int j = 0; j < 16; j++) {
printf("%d", convertToBinary(0, num)[j]);
}
}
在这种情况下,num
变量只取 0 到 65535 之间的自然值。
主要功能是send_number()
.
执行时出现 'Segmentation fault (core dumped)' 错误。我不明白为什么会这样。
PS: 我是C++初学者。我不太懂英语,使用 google 翻译器
有 2 个问题在起作用 - 作用域和(相关的)悬挂指针。
当您在函数内定义任何变量时 - 它仅在 in 该函数内有效。
convertToBinary returns 指向无效内存的指针。所以当你尝试打印它时 - 你正在使用
convertToBinary(0, num)[j]
想一想这是做什么的。您采用函数返回的无效指针并向其添加偏移量 j
。
我正在编写一个 C++ 程序,需要将数字从十进制转换为二进制。这是我的代码:
int* convertToBinary(int i, unsigned int n) {
int ans[10000];
if (n / 2 != 0) {
convertToBinary(i + 1, n / 2);
}
ans[i] = n / 2;
return ans;
}
void send_number(int num) {
for (int j = 0; j < 16; j++) {
printf("%d", convertToBinary(0, num)[j]);
}
}
在这种情况下,num
变量只取 0 到 65535 之间的自然值。
主要功能是send_number()
.
执行时出现 'Segmentation fault (core dumped)' 错误。我不明白为什么会这样。
PS: 我是C++初学者。我不太懂英语,使用 google 翻译器
有 2 个问题在起作用 - 作用域和(相关的)悬挂指针。 当您在函数内定义任何变量时 - 它仅在 in 该函数内有效。
convertToBinary returns 指向无效内存的指针。所以当你尝试打印它时 - 你正在使用
convertToBinary(0, num)[j]
想一想这是做什么的。您采用函数返回的无效指针并向其添加偏移量 j
。