我正在尝试对我的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] != ' '; 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
您正在分配内存并将该地址分配给te
,然后立即用te = word[i]
覆盖该值。这将泄露calloc
返回的内存。
word[i+1]
将在i
循环的最后一次迭代中访问阵列的末尾,当i == numWord - 1
时。这是您分割故障的来源。