• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[C] Przydzielanie pamięci - malloc

0 głosów
508 wizyt
pytanie zadane 9 września 2016 w C i C++ przez serdel3k Nowicjusz (120 p.)

Cześć, 

mam problem z funkcją malloc, konkretnie gdy przydzielam pamięć w funkcji main, program poprawnie powiadamia o niemożności przydzielenia pamięci gdy tablica liczb jest zbyt duża. Napisałem jednak funkcję za pomocą której przydzielam pamięć:


int przydziel(int n, int m, int ** *tab)
{
  int j;
      *tab=malloc(n*sizeof(int*));
      if(*tab==NULL)
      {
          printf("nie mozna przydzielic pamieci\n");
          return 1;
      }
      else{
      for(j=0; j<n; j++)
      {
         *(*tab+j)=malloc(m*sizeof(int));
         if(*(*tab+j)==NULL)
         {
             printf("nie mozna przydzielic\n");
             return 1;
         }
      }
        return 0;
      }
}

przy użyciu program wyświetla komunikat o nie przydzieleniu pamięci jednak nie zwraca wartości 1 a "wysypuje" się. Jestem ciekaw, dlaczego tak się dzieje?

1 odpowiedź

0 głosów
odpowiedź 9 września 2016 przez Benek Szeryf (94,170 p.)

Czy Ty chcesz przydzielić pamięć na N×M-wymiarową tablicę? Nie prościej to zrobić w ten sposób:

int *ptr = malloc(N*M*sizeof(int));
if (ptr == NULL)
   printf("Error\n");
...
free(ptr);

?

Podobne pytania

0 głosów
1 odpowiedź 820 wizyt
pytanie zadane 15 listopada 2017 w C i C++ przez kosttek Początkujący (450 p.)
0 głosów
1 odpowiedź 898 wizyt
pytanie zadane 13 grudnia 2016 w C i C++ przez adam1297 Użytkownik (630 p.)
0 głosów
1 odpowiedź 769 wizyt
pytanie zadane 25 listopada 2017 w C i C++ przez Krótki Użytkownik (760 p.)

93,772 zapytań

142,730 odpowiedzi

323,382 komentarzy

63,369 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...