cześć mam problem z nieobsługiwanym wyjątkiem. MV zgłasza mi "Zgłoszono nieobsługiwany wyjątek: naruszenie dostępu do odczytu.
WW2 było nullptr."" po wywołaniu funkcji czysc ale tylko gdy stos jest pusty .Proszę o pomoc
void *MY_STUDENT_MALLOC(char *nnazwisko, size_t size_nnazwisko, size_t rok, KIERUNEK kierunek)
{
MY_STUDENT *WW1 = (MY_STUDENT *)malloc(sizeof(MY_STUDENT));
if (WW1)
{
WW1->nazwisko = (char *)malloc(size_nnazwisko * sizeof(char));
if (!(WW1->nazwisko))
printf("error // MY_STUDENT_MALLOC2");
memcpy(WW1->nazwisko, nnazwisko, size_nnazwisko);
WW1->size_nazwisko = size_nnazwisko;
WW1->rok = rok;
WW1->kierunek = kierunek;
}
else printf("error // MY_STUDENT_MALLOC2 ");
return (void *)(WW1);
}
void MY_STUDENT_CZYSC(void *wsk)
{
MY_STUDENT *WW2 = (MY_STUDENT *)wsk;
if (WW2->nazwisko) { // Tu zgłasza wyjątek
free((WW2)->nazwisko);
}
if (WW2 == NULL) {
printf("Pusto1");
}
else if (WW2) {
free(WW2);
}
}
struct MY_STUDENT
{
enum KIERUNEK kierunek;
char *nazwisko;
size_t size_nazwisko;
size_t rok;
};
C
castowanie pomiędzyvoid *
a dowolnym innym wskaźnikiem jest robione domyślnie. Nie trzeba nic pisać. To w C++ trzeba castować zvoid*
do innego wskaźnika.