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

  • DJPixcell

    DJPixcell

    20 NİSAN 2007
  • How Things Are Made

    How Things A

    17 HAZİRAN 2008
  • RFS Dan

    RFS Dan

    22 Temmuz 2014