Tag: 分段 故障

C中的递归深度是否有任何硬连线限制

正在讨论的程序试图使用recursion来计算sum-of-first-n-natural-numbers 。 我知道这可以使用一个简单的公式n*(n+1)/2但这里的想法是使用recursion 。 该计划如下: #include unsigned long int add(unsigned long int n) { return (n == 0) ? 0 : n + add(n-1); } int main() { printf(“result : %lu \n”, add(1000000)); return 0; } 该程序在n = 100,000时运行良好,但当n的值增加到1,000,000 ,会导致Segmentation fault (core dumped) 以下内容取自gdb消息。 Program received signal SIGSEGV, Segmentation fault. 0x00000000004004cc in add (n=Cannot access […]

从用户获取字符串时出现分段错误

码: int main() { char *name=NULL; int n; printf(“\nenter the string\n”); scanf(“%s”,name); n=strlen(name); printf(“%d”,n); return 0; } 我得到分段错误。 代码有什么问题? 我已经包含了stdio.h , stdlib.h , string.h 。

奇怪的seg故障,可能与realloc

char *dumpTB (TB tb){ char* text = malloc(sizeof(char)); int i = 0; // int x = 0; //string index tNode* curr = tb->head; while(curr != NULL){ while(curr->line[x] != ‘\n’){ printf(“%d”, i); text[i] = curr->line[x]; printf(“%c\n”, text[i]); text = realloc(text, i+1); i++; x++; } text[i] = ‘\n’; printf(“%c”, text[i]); text = realloc(text, i+1); i++; x = […]

C分段fault-char指针

我需要帮助找出我在这里遇到分段错误的原因。 我已经过去了,我认为我的指针做错了,但我可以搞清楚是什么。 我的计划: #include #include void encrypt(char* c); //characters are shifted by 175 int main(){ char* a; *a = ‘a’; /*SEGMENTATION FAULT HERE!*/ encrypt(a); printf(“test:%c/n”,*a); return 0; }; void encrypt(char* c){ char* result; int i=(int)(*c); i+=175; if(i>255) { i-=256; } *c=(char)i; };

在c中分配结构成员时的分段错误

我在c中有两个结构 struct data{ char *name; }; struct lst{ struct lst *next; struct table *data; }; 当我试图指定一个名字时 l-> data-> name = d-> name; 的printf( “%S”,1->数据 – >名); 它给出了分段错误。 那是因为只读内存还是由其他原因造成的? 好吧我解决了问题:)我做了: l-> data = d; d已经有了这个名字:)谢谢大家

“分段错误”与“运行时间”错误?

考虑一下这段片段: char *str = “hellow Ghost”; str[0] = ‘z’; printf(“%s”, str); 这是一个分段错误。 它是否也在运行时内存错误? 我通过分段故障理解的是:当您访问不属于您的内存时出现分段错误。 它基本上是为您创建的实用程序,可以在不让您破坏内存的情况下轻松完成工作。 分段错误涵盖了多少和什么样的内存错误以及调用它来检查指针或引用处理内存的错误。 由于逻辑不正确,也会发生运行时错误。 除此之外,运行时错误和关于内存的分段错误之间是否存在任何差异。

Shellcode没有运行

我试图通过C程序运行很多shell代码来测试它们。 这里是 #include #include unsigned char code[] = “shell here”; main() { printf(“Shellcode Length: %d\n”, strlen(code)); int (*ret)() = (int(*)())code; ret(); } 这是shellcode的例子 “\x31\xc0\xb0\x46\x31\xdb\x31\xc9\xcd\x80\xeb”\ “\x16\x5b\x31\xc0\x88\x43\x07\x89\x5b\x08\x89″\ “\x43\x0c\xb0\x0b\x8d\x4b\x08\x8d\x53\x0c\xcd”\ “\x80\xe8\xe5\xff\xff\xff\x2f\x62\x69\x6e\x2f”\ “\x73\x68\x58\x41\x41\x41\x41\x42\x42\x42\x42” (\ bin \ cat \ etc \ shadow)运行后 gcc sctest.c -o out ./out 它只是给我shellcode长度和分段错误我已经尝试了很多不同的shellcode但是一切只是给了我段错误我的dmesg | tail -1 [18440.783383] test [8768]:segfault at 8049700 ip 08049700 sp bffff2ec error […]

〜没有对stdout的反应〜在C

#include #include #include int main() { int a,query,in,n,b[n],sum[a]; sum[1]=0; scanf(“%d”,&query); for(a=1;a<=query;a++) { scanf("%d",&in); for(n=1;n<=in;n++) { b[n]=1+7*(n-1)+6*(n-1)*(n-2)+(n-1)*(n-2)*(n-3); sum[a]=sum[a]+b[n]; } } for(a=1;a<=query;a++) { printf("%d\n",sum[a]); } return 0; } 我已经制作了这个在终端上运行的代码。 但是在黑客排名中它显示出来了 输入(stdin) 2 2 5 你的输出(标准输出) ~ no response on stdout ~ 预期产出 9 225 编译器消息 Segmentation Fault 现在我该怎么做才能解决问题。

陷入了分段错误错误

我正在用c编写一个简单的程序,我遇到了这个错误 分段故障(核心转储) 我知道由于内存访问冲突而发生Segmentation fault错误。 但是我无法弄清楚下面简单的程序在哪里发生了坏的内存访问。 #include int main() { int a = 0; scanf(“%d”, a); printf(“%d\n”, a); return(0); } 我在这里在线编译,在代码块中它也给出了同样的错误。

分段错误 – C语言中的声明和init数组

我对来自Python,Java和C#世界的C.非常新。 这可能是一个愚蠢的问题,但我得到分段错误: // struct for storing matrices typedef struct { int m; int n; float* elts; } Matrix; 在我的主要方法中: Matrix A; An = 3; Am = 3; memcpy( A.elts, (float[]) {1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f, 7.0f, 8.0f, 9.0f}, 9 * sizeof(float)); // seg fault because of this memcpy. 我也试过没有f ,同样的问题。 你能帮忙吗?