Czy ktoś może mi pomóc, dlaczego otrzymuję komunikat o błędzie podczas próby zwolnienia przydzielonej pamięci: wykryto uszkodzenie sterty. Wykryto CTR, aplikacja napisała pamięć po końcu bufora sterty.C++ nowy/usuń i zwiąż *
char *ff (char *s){
char *s1 = new char [strlen(s)];
strcpy(s1, s);
return s1;
}
int _tmain(int argc, _TCHAR* argv[])
{
char *s = new char [5];
strcpy(s, "hello");
char *s2 = ff(s);
delete []s; // This works normal
delete []s2; // But I get an error on that line
return 0;
}
Oczywiście, jest to tylko ćwiczenia i prawdziwy ustawienie zamiast tego używasz 'std :: string', prawda? –
@ MatthieuM. Całkowita racja. Nie wolno mi używać std :: string; – user1448906