标签: segmentation-fault

C.在内部功能时主要但是分段错误

这段代码给出了一个分段错误但是如果测试函数体直接写在main函数中就可以正常工作.那么,您认为导致这个问题的是什么?

分段故障:

#include<stdio.h>

int test()
{
    int i=0;
    int *p;
    printf("pass\n");
    for (i = 0; i < 24; i++)
    {
        printf("%d\n",i);
        *(p+i) = i;
        printf("%d\n",*(p+i));
    }
    return 1;

}

int main() {
    int x = 0;
    x = test();
}
Run Code Online (Sandbox Code Playgroud)

工作正常:

int main() {
    int i=0;
    int *p;
    printf("pass\n");
    for (i = 0; i < 24; i++)
    {
        printf("%d\n",i);
        *(p+i) = i;
        printf("%d\n",*(p+i));
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:在给我一堆投票之前,请尝试代码.我知道编程很糟糕.我正在评估一些C代码exames并且有一个学生写了这个.是的,不是很好,但事实上工作版本实际上正在运行.

c segmentation-fault

-4
推荐指数
1
解决办法
349
查看次数

为什么我在运行此功能时会出现分段故障?

当我发送标志-h或-H时,为什么会出现分段错误.

bool parse_command(int argc, char **argv, bool *header, char **fileName)
{

    if (!argv)
        return false;

    bool *flagh = false;
    bool *flagH = false;

    char *options = "Hh";
    int opt = 0;

    while ( (opt = getopt(argc, argv, options ) ) != -1)
    {
        printf("HELLO");
        switch (opt)
        {
            case 'h': 
                *flagh = true; 
                break;
            case 'H':
                *flagH = true; 
                break;
            default:
                usage_p1();  
                return false;
        }

    }
    printf("%d", opt);
    // Implement this function
    return true;
}
Run Code Online (Sandbox Code Playgroud)

c flags getopt segmentation-fault

-4
推荐指数
1
解决办法
86
查看次数

为什么strcat导致分段错误

任何人都可以向我解释为什么以下代码导致分段错误?buff应足够长,可容纳128个字符.

int main () {
    char buff[16384];
    char buff2[128];
    sprintf(buff2, "MinPer(PatternName_Equal27_xxxxxxx_MasterPatSetup.PatternName_Equal27_xxxxxxx__default_WFT___WFTRef.ActualT0Period.UserPeriod_2_1)" );
    strcat(buff, buff2);
    std::cout << buff2 << endl;
    std::cout << buff << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ segmentation-fault

-4
推荐指数
1
解决办法
137
查看次数

启动线程在指针初始化时导致分段错误

为什么*y = 20只有启动两个“空”线程时,这段代码才会导致分段错误?

int main(int argc, char **argv) {

    int x = 10;
    int *y;
    *y = 20;

    std::thread t1([]{});
    std::thread t2([]{});

    t1.join();
    t2.join();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ multithreading pointers segmentation-fault

-4
推荐指数
1
解决办法
85
查看次数

随机初始化一个结构体

我定义了两个结构。点和三角形,我想在主函数中用随机值初始化它们。但是这一行的编译器出了问题,停了下来。问题是什么?

#include <cmath>
#include <ctime>

struct Point{
    double x;
    double y;
    double z;
};
struct Triangle{
    Point* a;
    Point* b;
    Point* c;
};
int main() {
    Triangle t1;
    srand(time(0));
        t1.a->x=10.0*(rand()/RAND_MAX)-5; //this line gives Segmentation fault
        t1.a->y=10.0*(rand()/RAND_MAX)-5;
        t1.a->z=10.0*(rand()/RAND_MAX)-5;
        t1.b->x=10.0*(rand()/RAND_MAX)-5;
        t1.b->y=10.0*(rand()/RAND_MAX)-5;
        t1.b->z=10.0*(rand()/RAND_MAX)-5;
        t1.c->x=10.0*(rand()/RAND_MAX)-5;
        t1.c->y=10.0*(rand()/RAND_MAX)-5;
        t1.c->z=10.0*(rand()/RAND_MAX)-5;
}
Run Code Online (Sandbox Code Playgroud)

c++ struct segmentation-fault

-4
推荐指数
1
解决办法
252
查看次数

无法突破"While"循环

我正在将2-d char数组转换为2-d int数组,while如果\0或者\n进入字符串,我需要突破循环.此代码给出了分段错误.Arrayis的定义和索引小于1000并且已经存储了2-d char数组tempCharArray.我的代码有什么问题?

//Array[tempCount][1000];

for(int i=0;i<tempCount;i++)
{
   strtok(tempCharArray[i]," ");
   while(tempCharArray[i]!="\0" || tempCharArray[i]!="\n")
   {
      Array[i][arrayindex]=atoi(strtok(NULL," ");
      arrayindex++;
   }
   arrayindex=0;
}
Run Code Online (Sandbox Code Playgroud)

c arrays dynamic char segmentation-fault

-5
推荐指数
1
解决办法
254
查看次数

指针如何分配内存

#include<stdio.h>
int main()
{

  char *str;

  gets(str);

  puts(str);

return 0;
}
Run Code Online (Sandbox Code Playgroud)

output =分段错误

为什么它会给出分段错误?

c pointers gets segmentation-fault

-5
推荐指数
1
解决办法
96
查看次数

为什么我在以下代码中遇到分段错误(核心转储)?

在这个代码中使用 a--b++显示分段错误,但如果给予--a++b它的工作,为什么?!

add(a,b)
{ 
   if (a==0)
       return b;
    else
       return add(a--,b++); //why this line didn't work??! 
}
Run Code Online (Sandbox Code Playgroud)

c recursion segmentation-fault post-increment

-5
推荐指数
1
解决办法
200
查看次数

C中的参数值是不可变的吗?

我有以下代码:

void func(uint8 *var) {
    uint8 tempvar;

    if (var)
        var = &tempvar;

    *var = 0;
}
Run Code Online (Sandbox Code Playgroud)

我使用以下方法调用函数:

func(NULL);
Run Code Online (Sandbox Code Playgroud)

代码在"*var = 0;"行给出了分段错误 因为var仍然指向内存地址0x0.我不明白为什么我对临时变量的赋值不起作用!

c pointers segmentation-fault

-5
推荐指数
1
解决办法
73
查看次数

关于int*a = {1,2,3}的有效性.为什么随后的*崩溃?

int main()
{
   int *a={1,2,3}; //which value is stored and where it is stored 
   printf("\n%d",*a); //crashes here
}
Run Code Online (Sandbox Code Playgroud)

请解释上述原因导致崩溃的原因.

c segmentation-fault

-5
推荐指数
1
解决办法
112
查看次数