Разборка при отладке в Clion 2017.3.4 - что это значит? - PullRequest
0 голосов
/ 27 апреля 2018

Я сейчас использую Clion 2017.3.4 в C99.

при попытке запустить и отладить мою программу, отладчик переходит в «представление разборки», и я хочу знать, в чем проблема.

в основном, функция получает сезон (тип), входную строку (season_info) и индекс, который указывает на другое место во входной строке.

функция должна возвращать год как целое число , в то время как ввод - строка

представление о разборке показывается, когда я вхожу в строку free (). есть идеи в чем проблема? и вообще что означает вид разборки?

int GetSeasonYear(Season season, const char* season_info, int *index){ 

char* tmp_str = GetStringByLine(season_info, index);
if(tmp_str == NULL){
    SeasonDestroy(season);
    return 0;
}

season->season_year = atoi(tmp_str);
free(tmp_str);

return 1;

}

эта функция используется внутри функции GetSeasonYear (хотя я проверяю, и она работает нормально).

char* GetStringByLine(const char* season_info, int* index){ // change back to static

int i = 0;

while(season_info[i] != '\n'){
    i++;
}

char* tmp_str = malloc(sizeof(char)*(i+1));
if(tmp_str == NULL){
    return NULL;
}

memcpy(tmp_str, season_info, sizeof(char)*i);
tmp_str[i+1]='\0';

*index = i;

return tmp_str;

}

спасибо

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Вы входите в функцию (бесплатно), для которой вы либо а) нет источника для или же б) иметь источник для, но отладчик не может найти его.

0 голосов
/ 27 апреля 2018

free () - это вызов системы для освобождения памяти. Скорее всего, он был скомпилирован с высокой оптимизацией и без символов отладки, поэтому лучшее, что может сделать отладчик, - это просто показать вам разобранный машинный код, который он выполняет. В принципе это нормально. Вступать в подобные звонки очень мало пользы.

...