• 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

Object Storage Arubacloud
0 głosów
887 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ź 255 wizyt
0 głosów
2 odpowiedzi 780 wizyt
0 głosów
1 odpowiedź 277 wizyt
pytanie zadane 7 kwietnia 2023 w C i C++ przez Zuzan Początkujący (390 p.)

92,565 zapytań

141,418 odpowiedzi

319,604 komentarzy

61,951 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...