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

  • Amir Parmar

    Amir Parmar

    25 Kasım 2010
  • Autodesk 3ds Max Learning Channel

    Autodesk 3ds

    23 HAZİRAN 2010
  • Rachel Raum

    Rachel Raum

    10 EYLÜL 2007