[c] Alokacja pamięci

0

Czy to jest wykonane poprawnie??

    if((inp2 = fopen("intermail.conf", "rb+")) == NULL){
        return -1;
    }
    bufconf = (char *)malloc(MAX_NUM_ELEMENTS);
      n= 0;
      m1 = MAX_NUM_ELEMENTS;
    for(i = 0;(*(bufconf + i) = getc(inp2)) != EOF; i++){
        if(i >= m1){
            m1 = 2 * i;
            if( (tmpconf = realloc(bufconf, m1)) == NULL)
                break;
            else
                bufconf = tmpconf; 
        }
    }
0

Wygląda Ok, ale zamiast zadawać takie pytanie napisz do tego unit testy to będziesz miał więcej pewności.

0

A jak stworzyć takie testy jeśli chodzi o Buildera C++ 6
jakiś przykład

0

Naprawdę, żadna filozofia, piszesz program, który używa danej metody i sprawdzasz czy spełnia wszystkie założenia, warunki brzegowe i takie tam. Nie jestem pewien, ale wygląda na to, że Builder nie zapewnia fremworka dla testowania, ale za to wykrywa wycieki pamięci (Code Guard).

Przykład testu dla AnsiString:

void jaksKlasa::testSumOfStrings()
{
     const char Tekst1 = "Koń to nie ";
     const char Tekst2 = "Żaba";
     const expectedSum = "Koń to nie Żaba";
     AnsiString a;
     AnsiString b;
     a = Tekst1;
     b = Tekst2;
     a = a + b;
     assert(strcmp(a.c_str(),expectedSum)==0);
}

Sprawdzasz czy dla jakiś danych wejściowych wynik działania jest zgodny z oczekiwaniami i tyle. Piszę się zwykle kilka takich metod dla każdej funkcji/metody. A jak włączysz Code Guard to po zamknięciu aplikacji pokaże ci miejsca wycieków pamięci (gdzie została przydzielona pamięć, której nie zwolniono).

1 użytkowników online, w tym zalogowanych: 0, gości: 1