这段代码说分段错误导致程序的scanf不工作。我使用调试器找出了这一点。跳过scanf(num)。因此出现了分段故障。谁能告诉我为什么scanf被跳过了?我使用^\n以便scanf可以读取带空格的字符串。帮助。
#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main(void)
{
int a, b;
scanf("%d %d", &a, &b);
int sumr, maxr;
int sumc, maxc;
我知道下面的代码是不正确的,因为我为任意地址分配了一个值。
#include <iostream>
using namespace std;
int main()
{
int *i;
*i = 12; // Not right.... i is not initialized.
cout << *i << endl;
return 0;
}
这段代码在Linux上给出了一个分段错误。但是,在Windows上它输出12..。
为什么它会在Windows上工作呢?我不是把12分配到任意的位置吗?我的程序没有特权?
int **elem;
elem = (int **)malloc(sizeof(int**) * numCol);
for (i = 0; i < 2; i++)
for (j = 0; j < numCol; j++)
{
scanf("%d", &elem[i][j]); //Shouldn't it give a value to the address pointed by
//a point
为什么下面的代码没有给出分段错误
#include <stdio.h>
int main(){
int i = 0;
int x [10];
while(i < 500){
x[500] = 3;
printf("%d", x[500]);
i++;
}
}
但是这段代码是这样做的。
#include <stdio.h>
int main(){
int i = 0;
int x [10];
while(i < 500){
x
谁能告诉我为什么这段代码不能工作?它总是显示分段错误
int main()
{
int a = 10;
int b = (int)&a;
int *c = (int*)b;
printf("%d", *c);
return 0;
}
当我打印c的值时,正如我所期望的那样,它是a的地址,但是当我遵守它时,发生了分段错误。假设这是一个32位编译器。
我已经写了一个C++函数,它以数组及其大小为参数,并执行某些操作。当我尝试运行这段代码时,它显示了分段错误.Can有人告诉我为什么这段代码显示分段错误以及如何删除它?
void rearrange(long long *arr, int n)
{
long long temp[n];
int max = n-1;
int min = 0;
for(int i=0;i<n;i++){
if(i%2 == 0){
temp[i] = arr[max];
max--;
}
这段代码导致了分段错误,我不知道为什么它会这样做,代码只是应该将堆栈中esp的当前位置传递给ebp,并在ebp上使用间接寻址模式来获取地址值,我不知道为什么操作系统会终止,这会导致分段错误
.section .data
.section .text
.globl _start
_start:
movl $50,%edx
pushl, %edx
movl %esp,%ebp
movl (%ebp),%ebx ## this causes the problem for some reason,
movl $1,%eax
int $0x80 ## Program sh