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

  • DragsterMC Gaming

    DragsterMC G

    30 HAZİRAN 2013
  • Ralph Phillips

    Ralph Philli

    5 Aralık 2006
  • VideoGamePervert

    VideoGamePer

    30 AĞUSTOS 2008