gpt4 book ai didi

c - 段错误(核心转储)分配内存?

转载 作者:太空宇宙 更新时间:2023-11-04 01:53:08 24 4
gpt4 key购买 nike

我在运行该程序时遇到错误“段错误(核心已转储)”。我是 c 编程的新手,所以它可能有些愚蠢,但我无法弄清楚。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void swap(char *x, char *y){
char temp = *x;
*x=*y;
*y=temp;
}

char** getPermutations(char *string){
int length = strlen(string);
int startIndex = 0;
int endIndex = length - 1;

if(startIndex == endIndex){
printf("%s\n", string);
}else{
for(int j = startIndex; j<=endIndex; j++){
swap((string + startIndex),(string + j));
getPermutations(string);
swap((string+startIndex),(string+j));
}
}
}

int main(int argc, char *argv[]){
if(argc>2){
printf("\nToo Many arguments\n");
exit(0);
}else{
printf("%s",argv[1]);
char * str = malloc(strlen(argv[1]) + 1);
strcpy(str,argv[1]);
getPermutations(str);
}
}

最佳答案

您的问题是 getPermutations 无休止地调用自身。你需要传递一些额外的东西给它,这样它才能知道什么时候停止。实际上,它只是一遍又一遍地调用自己,直到出现堆栈溢出。

另外,您有 getPermutations 设置来返回一个 char**,但是您永远不会返回任何东西。所以这也很奇怪。

关于c - 段错误(核心转储)分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39607614/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com