我正试图让我的2d数组冒泡。一旦达到这一点,我就会发生内存泄漏:
te = word[i];
word[i] = word[i+1];
一旦到这一点,我就会遇到段错误:
word[i+1]=te;
我曾尝试使用strcpy
复制字符串,但是当我也使用它时仍然遇到段错误错误。
void word_sorter(char** word,int numWord){
int i =0;
int j =0;
for(i = 0; i < numWord; i++){
for(j = 0; word[i][j] != '\0'; j++){
if(word[i][j]>= 'A' && word[i][j] <= 'Z'){
char *te;
te =(char*)calloc(10000,sizeof(char));
te = word[i];
word[i] = word[i+1];
word[i+1]=te;
}
}
}
}
我正在尝试对字符串进行排序,以使大写字母优先于小写字母
INPUT: aand AAnd Aand
OUTPUT:AAnd Aand aand
答案 0 :(得分:0)
您正在分配内存并将该地址分配给te
,然后立即用te = word[i]
覆盖该值。这将泄漏calloc
返回的内存。
word[i+1]
将在i
循环时,在i == numWord - 1
循环的最后一次迭代之后访问数组末尾。这是您的细分错误的根源。