首页 > 解决方案 > 如果元素出现超过 n 次,则删除该元素的出现 - realloc():下一个大小无效

问题描述

我一直在做一些有趣的编码练习,最近我在 codewars 上遇到了这个挑战。下面列出了我提出的解决方案,但它输出错误(“realloc(): invalid next size”和“Test Crashed - Caught unexpected signal: 6”)。我不知道这里发生了什么,因为 realloc 对我来说似乎完全没问题。有什么线索吗?

谢谢,何塞·阿尔梅达

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

int* delete_nth(size_t szin, int order[szin], int max_e, size_t *szout) {

    int *arr = NULL, *temp, tms;
    尺寸_t i,j;
    
    *szout = 0;
    
    对于 (i = 0; i < szin; i++) {
      tms = 0;
      对于 (j = 0; j < *szout; j++)
        if (arr[j] == order[i]) {
          tms++;
        }
        
      如果(tms < max_e){
        temp = realloc(arr, *szout + 1);
        if (temp == NULL) 返回 NULL;
        arr =温度;
        arr[*szout] = order[i];
        (*szout)++;
      }
    }
    
    返回 arr;
}

标签: cc18

解决方案


推荐阅读