Моя программа сначала работает медленно после компиляции, а потом быстро. Если я скомпилирую его снова, он снова будет работать медленно для первого запуска и быстро для других запусков - PullRequest
0 голосов
/ 30 мая 2020

Эта программа создает стек только из двух символов a и b. Я просто делаю зарядку. Но происходит что-то странное.

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


struct mychar {
    char value;
    struct mychar *nextPtr;
};

typedef struct mychar Mychar;


void push(Mychar ** , char );
void pop(Mychar ** , char );
void printlist(Mychar * );


int main(){
    Mychar *topPtr = NULL;
    push (&topPtr, 'a');
    push (&topPtr, 'b');
    printlist(topPtr);
}


void push(Mychar **tPtr , char newvalue){
    Mychar *newtopPtr = calloc(1,sizeof(Mychar));
    newtopPtr->value = newvalue;
    newtopPtr->nextPtr = *tPtr;
    *tPtr = newtopPtr;
}


void pop(Mychar ** , char );


void printlist(Mychar *cPtr){
    while (cPtr!=NULL){
        printf("%c\n", cPtr->value);
        cPtr = cPtr->nextPtr;
    }
}

Если я скомпилирую и запустил его, для отображения результата потребуется несколько секунд:

$ ./"stack_dyn" 
b
a

Но в следующих запусках это будет быстро. Кроме того, если я скомпилирую его снова, он будет медленным при первом запуске и быстрым при втором запуске. Почему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...