SORU
6 Mart 2012, Salı


Güvenli C veya C bir yapı, geri dönmek için mi ?

Anladığım kadarıyla bu işi olmamalı, ama böyle bir şey yapmak örnek (not kodu mutlaka sözdizimsel olarak doğru değil ama bir fikir olduğunu) gördüm sanırım

typedef struct{
    int a,b;
}mystruct;

Ve burada bir işlevi var

mystruct func(int c, int d){
    mystruct retval;
    retval.a = c;
    retval.b = d;
    return retval;
}

Her zaman eğer böyle bir şey yapmak istiyorsak malloc çiğnenmiş bir yapı için bir işaretçi dönmek gerekir, ama böyle bir şeyi bu örnekler gördüm pozitif olduğumu anladım. Bu doğru mu? Şahsen ben her zaman da malloc çiğnenmiş bir yapı için bir işaretçi dönmek ya da sadece çalışması için referans ile geçiş yapın ve değerleri orada değiştirin. Benim anladığım işlev kapsamı bittikten sonra, yığın yapısı ayırmak için kullanılan her ne ise üzerine olabilir (çünkü).

Hadi bu soru için ikinci bir parça eklemek: bu derleyici ile değişir Mi? Eğer bunu yaparsa, masaüstü uygulamaları son sürüm için davranış nedir: gcc, g ve Visual Studio?

Bu konudaki düşünceleriniz?

CEVAP
6 Mart 2012, Salı


Son derece güvenlidir ve yanlış değil bunu yapmak için. Ayrıca: derleyici. göre değişir değil

(Örnekte olduğu gibi) Eğer yapı çok büyük olduğunda, genellikle, bu yaklaşım malloc çiğnenmiş bir yapı (malloc pahalı bir işlemdir) dönen bile daha iyi olduğunu iddia ediyorum.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dopelives

    Dopelives

    30 Temmuz 2009
  • Glove and Boots

    Glove and Bo

    1 ŞUBAT 2007
  • Justin Schenck

    Justin Schen

    24 Kasım 2006