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

Dynamiczna alokacja pamięci w funkcji - C

42 Warsaw Coding Academy
0 głosów
1,068 wizyt
pytanie zadane 20 czerwca 2018 w C i C++ przez PgK Obywatel (1,380 p.)

Witam,

Czy przedstawione przeze mnie sposoby alokacji pamięci w funkcji są poprawne?

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

#define N 10

int* alokacja01();
void alokacja02(int* tab);


int main()
{
    //*********** do funkcja alokacja01   ***********************
    int* tab01 = alokacja01();
    //jakies operacje na tab01
    free(tab01);


    //*********** do funkcja alokacja02   ***********************
    int* tab02;
    alokacja02(&tab02);
    //jakies operacje na tab02
    free(tab02);

    return 0;
}

//******************************************
int* alokacja01()
{
    int* tab = (int*)malloc(N*sizeof(int));
    return tab;
}

//******************************************
void alokacja02(int* tab)
{
    tab = (int*)malloc(N*sizeof(int));
}

 

 

1 odpowiedź

–1 głos
odpowiedź 20 czerwca 2018 przez criss Mędrzec (172,590 p.)
I tak i nie. Technicznie jest ok, ale w większym kodzie łatwo można się pogubić która funkcja alokuje pamięć (i trzeba ją zwolnić na zewnątrz) a która nie. Dlatego unika się takich sytuacji i generalnie można powiedzieć, że stylistycznie (? tak się mówi?) twój kod nie jest poprawny.
komentarz 20 czerwca 2018 przez draghan VIP (106,230 p.)
Criss, ktoś Ci się chyba włamał na kotno. :o
komentarz 20 czerwca 2018 przez criss Mędrzec (172,590 p.)
?? O co chodzi?
komentarz 28 czerwca 2018 przez draghan VIP (106,230 p.)

Poziom tej wypowiedzi odstaje od pozostałych Twoich postów, stąd przypuszczenie że to nie Ty napisałeś. :) Zapewne dlatego też dostałeś minusa (nie ode mnie).


Dlaczego uważam że jakość tej odpowiedzi jest niska?

w większym kodzie łatwo można się pogubić która funkcja alokuje pamięć (i trzeba ją zwolnić na zewnątrz) a która nie

Obydwie przedstawione przez autora funkcje alokują pamięć i po wywołaniu obu trzeba ją zwolnić. Chyba że piszesz o ogóle wszystkich funkcji na świecie, a nie o tych konkretnych - wtedy kiepsko się wyraziłeś.

Dlatego unika się takich sytuacji

Ale... Jakich sytuacji? laugh


 

komentarz 28 czerwca 2018 przez criss Mędrzec (172,590 p.)
Wybacz :D Dość często pisze coś tego typu widocznie byłem już zmęczony. Mówiłem o wszystkich funkcacj w jakimś większym projekcie wśród ktorych można znaleźć takie które alokują pamięć i zwracają do niej wskaźnik. Masz racje, że nie jest to zbyt jasno napisane, ale już trudno :P

Podobne pytania

0 głosów
1 odpowiedź 458 wizyt
0 głosów
2 odpowiedzi 917 wizyt
0 głosów
1 odpowiedź 613 wizyt
pytanie zadane 7 kwietnia 2023 w C i C++ przez Zuzan Początkujący (390 p.)

93,383 zapytań

142,382 odpowiedzi

322,539 komentarzy

62,744 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...