Co jest lepsze?

0

Który kod jest lepszy

void funkcja(int n)
{
     char *a = malloc(sizeof(char)*n);
}

czy

void funkcja(unsigned int n)
{
     char *a = malloc(sizeof(char)*n);
}
0

Zdecydowanie powinno to wygladac tak:

void funkcja(int n)
{
char *a = new char[n];
}

A juz w ogóle to the best:
#include <string>
std::string a;

Tylko ze teraz to juz jest string a nie ciag znakowy(ale wszystko zalezy do czego chcesz to uzywac)
odradzam malloc,operator new jest nie tylko prostszy w uzyciu ale i bezpieczniejszy.... tlko nie zapomnij na koncu delete a; bo bedziesz mial wyciek pamieci :( (podobnie zreszta jak przy malloc() bez free())

0

Lepszy pod jakim wzgledem? Szybkosci?
Jezeli tak, to drugi, bo wykonywane jest mnozenie bez znaku, odrobine szybsze. Dodatkowo malloc wymaga size_t, ktory jest typu unsigned int, wiec nie jest wymagana niejawna konwersja (ale moze taka wystapic przy wywolaniu twojej funkcji).

/* Dopisane */
Styx: tylko jest pare ale...

  1. new nie uzyjesz w C
  2. new jest wolniejsze niz malloc, a tutaj najwyrazniej zalezy autorowi na szybkosci
  3. new dodaje troszke masy do twojego programu

1 użytkowników online, w tym zalogowanych: 0, gości: 1