SORU
26 Aralık 2009, CUMARTESİ


Ne zaman don't İ C malloc ve ne zaman kullanmalıyım?

Ben malloc nasıl anlamak() çalışır. Benim sorum, bu tip şeyler görürüm

#define A_MEGABYTE (1024 * 1024)

char *some_memory;
size_t size_to_allocate = A_MEGABYTE;
some_memory = (char *)malloc(size_to_allocate);
sprintf(some_memory, "Hello World");
printf("%s\n", some_memory);
free(some_memory);

Kısalık uğruna hata kontrol atlanmış. Benim sorum, sadece bellekte statik depolama için bir işaretçi başlatarak yukarıda yapabilir mi? belki de:

char *some_memory = "Hello World";

Hangi noktada aslında bellek ayırmaya gerek/değerleri başlatılıyor ilan etmek yerine kendinizi korumak için ihtiyacınız var mı?

CEVAP
26 Aralık 2009, CUMARTESİ


char *some_memory = "Hello World";

bir dize sabit bir işaretçi oluşturmak. Bu dize "Merhaba Dünya" bir yerde olacak salt okunur bellek ve sadece bir işaretçi var. parçası anlamına gelir Salt okunur olarak dize kullanabilirsiniz. Sanaolamazdeğişiklik. Örnek:

some_memory[0] = 'h';

Olur bela.

Diğer taraftan

some_memory = (char *)malloc(size_to_allocate);

ayrılmış bellek char dizi ( değişken) ve some_memory puan tahsis. Şimdi bu dizi hem okuma hem de yazma. Şimdi yapabilirsiniz:

some_memory[0] = 'h';

ve dizinin içeriğini değiştirmek için "Merhaba Dünya"

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bogdan Gabriel

    Bogdan Gabri

    5 Aralık 2006
  • Break

    Break

    10 Aralık 2005
  • UKF Dubstep

    UKF Dubstep

    29 NİSAN 2009