C yeni anahtar kelime kullanmalıyım ?
Kısa bir süreliğine C kullanıyorum ve merak ediyorumyenianahtar kelime. Bunu kullanarak olabilir, ya da sadece,?
1)yenianahtar kelime...
MyClass* myClass = new MyClass();
myClass->MyField = "Hello world!";
2). Olmadan ^em>yenianahtar kelime...
MyClass myClass;
myClass.MyField = "Hello world!";
Bir uygulama perspektifi yok gibi görünüyor farklı (ama eminim onlar... Ancak, benim birincil dili C# ve elbette 1 yöntem nedir alışığım.
Zorluk yöntem 1 std C sınıfları ile kullanmak için daha zor gibi görünüyor.
Hangi yöntemi kullanmalıyım?
Güncelleme 1:
Geçenlerde kullanılıryeniiçin anahtar kelimeyığın(veya . bellek ^em>ücretsiz mağaza) kapsam dışına gidiyordu büyük bir dizi (bir işlevinden döndürülen yani). Elemanların yarısı kapsamı dışında bozuk olmasına neden olan yığın kullanarak, nerede olduğumu, yığın kullanımı için anahtarlama elemanları inceliğini sağlamıştır. Yay!
Güncelleme 2:
Bir arkadaşım geçenlerde new
anahtar kelime; her türü kullanmak için basit bir kural olduğunu söyledi new
, 7 ** yazın.
Foobar *foobar = new Foobar();
delete foobar; // TODO: Move this to the right place.
Bu hep sil bir yere koymak gerek (kesmek ve yapıştırmak ya da bir yıkıcı veya başka bir şekilde yani) bellek sızıntıları önlemek için yardımcı olur.
CEVAP
Yöntem 1 (new
)
- free store (Bu sık sık aynı şeydir . bu nesne için bellek ayırır ^strong>yığın)
- Gerektirir, açıkça 10 ** bir nesne daha sonra. (Eğer bunu silmek bile, bellek sızıntısına neden olabilir)
- Bellek kalır kadar
delete
ayrılmış. (yani 12* *new
kullanarak oluşturduğunuz bir nesne olabilir) - Söz konusu örnek işaretçi
delete
d; sürece 22**her zaman silinmelidirhangi kontrol yol alınır, ya da eğer özel durumlar için durum olursa , ne olursa olsun.
Yöntem 2 (new
kullanarak değil)
- Ayırır nesne için bellekyığıntüm yerel değişkenler nereye) genellikle daha az yığın bellek için kullanılabilir; eğer çok sayıda nesne atarsanız, yığın taşması riski var.
delete
daha sonra gerek kalmayacak.- Bellek artık kapsam dışına çıktığında ayrılır. (yani gerek bir nesneye bir işaretçi yığını) 17* mi *
Bildiğim kadarıyla kullanmak için; yöntemini seçmek gibi en yukarıdaki kısıtlamaları göz önüne alındığında, işe yarıyor.
Bazı durumlarda kolay:
- Eğer ** 18, (memory leaks neden olasılığı) arama için endişelenmene gerek yok eğer doğru değilse
new
kullanmamalısın. - Eğer bir işlev nesnesi için bir işaretçi dönmek isterseniz,
new
kullanmanız gerekir
Anahtar kelime yazma 'içi' f...
Neden anahtar kelime "son" J...
Ne zaman "strictfp" java ana...
anahtar kelime yeni yöntem imzası...
Eğer gizleme amacı eğer yeni bir anaht...