我正在尝试计算浮标<= 9999的地板函数的结果。
#include <stdlib.h>
include <stdio.h>
#include "string.h"
int main(int argc, char* argv[]) {
int i, j, k;
int x[1000];
for(i = 0; i < 10000; ++i){
x[i] = i;
}
printf("Enter a float in 0..9999: ");
scanf("%d", k);
tester(x,
谁能告诉我为什么这段代码不能工作?它总是显示分段错误
int main()
{
int a = 10;
int b = (int)&a;
int *c = (int*)b;
printf("%d", *c);
return 0;
}
当我打印c的值时,正如我所期望的那样,它是a的地址,但是当我遵守它时,发生了分段错误。假设这是一个32位编译器。
尝试通过数组从用户获取行数和列数,但在运行时会出现分段错误。
#include<stdio.h>
int main(){
int rows;
int column;
int arr[rows];
int arr1[column];
printf("Enter the number of rows: ");
scanf("%d",&rows);
printf("Enter the number of column: ");
scanf("%d
我目前正在尝试使用fgets()从stdin中读取一行代码,但是我得到了一个分段错误(我不再得到分段错误,请参见编辑)
int main(void)
{
char selection;
string firstName = NULL;
printf("[A]dd a new client \n");
printf("[D]isplay all clients \n");
printf("[I]ncome Average for all clients \n");
printf("[Q]ui
这些代码段导致分段错误:
int *i;
printf("%d\n", *i);
int *i = NULL;
printf("%d\n", *i);
虽然这些情况并不是:
int *i;
i = malloc(sizeof *i);
int *i = NULL;
i = malloc(sizeof *i);
在所有示例中,野生指针和空指针被取消引用,并作为参数传递给应该导致分段错误的函数。为什么使用malloc的示例不像预期的那样运行并产生分段错误?
我正在处理代码安全问题。因此,下面讨论的代码是已知的易受攻击的。
我想了解为什么运行下面的代码没有分段错误。
#include <stdio.h>
int main(){
int a[3]={0,1,2};
for (int i=0; i<=400; i++)
printf("value of a[%d] is %d\n",i, a[i]);
}
但是运行下面的代码,将循环从400更改为4000,有分段错误吗?我想知道为什么在一种情况下有分割错误,而在另一种情况下没有。
#include <stdio.h>
这是将long转换为void *的正确方法吗?当在一个-O2程序中使用Qt时,我得到了一个分段错误。当使用-O1时,它没有分段错误。
在使用reinterpret_cast<void *>(tp.tv_nsec)时,我还可以使用-O2获得分段故障。
为什么会有分段故障?
timespec tp; // struct that holds nanoseconds since Epoch
clock_gettime(CLOCK_REALTIME, &tp); // tv_nsec is a long int
void *test = mmap((void *)(tp.tv_n
我想知道为什么这些程序中的一些是分段错误,而另一些则不是。
此程序抛出一个分段错误:
#include <stdio.h>
int main(){
int ar[2096263];
printf("asdf");
}
这张没有:
#include <stdio.h>
int main(){
int ar[2096263];
}
这个程序没有:
#include <stdio.h>
int main(){
int ar[2096262];
printf("asdf");
}
这一次是
假设您分配了一些数组arr大小n,如下所示:
int arr[n]; // Allocated fine
printf("%d", arr[n]); // Segfault if possible
是否存在这样一个数字n,因此我可以始终触发printf行上的分段错误?这可能是特定于某些操作系统。
我知道它的未定义行为,并且我知道当访问它并将其越界时,会影响到另一个内存区域,这将(很可能)在以后给我带来重大问题。
我的教授说,这并不总是分段故障,我很好奇是否会在某些情况下创建一个一定大小的数组,使用某种类型的操作系统或计算机,每次都会可靠地分段故障。
这有可能吗?是否有什么条件,
我想知道在下面的程序中是什么导致了分段错误。我认为分段错误发生在递归过程中。一旦我输入了一个数字,就会出现错误信息"An Access Segmentation An“。
代码如下:
#include <stdio.h>
#include "simpio.h"
int sum(int n);
main()
{
int n, Sum;
printf("Please enter the amount of elements in sequence n/n+1: ");
printf("LOL1
首先,我编写了下面的代码(我知道代码很糟糕,但只用于测试):
#include <stdio.h>
int ints[20] = {10, 20};
int main()
{
printf("%d", ints[-44]); //ints[-552] will not encounter segmentfault in my machine
}
在我的机器中,ints的内存地址是0x600840,在我的机器中,内存页的大小是4096字节,因此,0x600000到0x600fff之间的内存地址是可读的,所以只有在ints之前,它才会遇到segmentfaul
我不明白为什么这个小小的C程序分段错误:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
int in = atoi(argv[1]);
printf("Input %d\n",in);
int *n = (int *)malloc(in);
int j;
for (j=0;j<in;j++)
n[j] = j;
printf("Sanity check...\n"
为什么下面的代码没有给出分段错误
#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