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

  • ThePhestor

    ThePhestor

    22 Mart 2011
  • FF Radioo

    FF Radioo

    14 ŞUBAT 2007
  • videoisunrelated

    videoisunrel

    5 Mart 2009