SORU
15 ŞUBAT 2009, Pazar


Geçerlilik için test işaretçileri (C/C )

Eğer belirli bir işaretçi olup olmadığını belirlemek için herhangi bir yolu var mı (programlama yoluyla, tabii ki)""? geçerli NULL için kontrol kolaydır, ama ne 0x00001234 gibi şeyler hakkında? İşaretçi bu tür bir başvuru girişimi sırasında bir özel durum kaza meydana/.

Çapraz platform bir yöntemi tercih edilir, ama özel platform (Windows ve Linux için) de Tamam.

Açıklama için güncelleme: Sorun değil ile bayat/serbest/başlatılmamış bir işaretçi; bunun yerine, ben bir uygulama API alır işaretçiler arayan (gibi bir işaretçi bir dize, bir dosya tanıtıcı, vb.). Arayan (yanlışlıkla amaçlı olarak ya da işaretçi olarak geçersiz bir değer gönderebilir. Nasıl bir kaza engellerim?

CEVAP
15 ŞUBAT 2009, Pazar


Açıklama için güncelleme:Sorun değil ile bayat, serbest veya başlatılmamış bir işaretçi; bunun yerine, ben bir uygulama API alır işaretçiler arayan (gibi bir işaretçi bir dize, bir dosya tanıtıcı, vb.). Arayan (yanlışlıkla amaçlı olarak ya da işaretçi olarak geçersiz bir değer gönderebilir. Nasıl bir kaza engellerim?

Bunu kontrol edemezsin. Sadece bir işaretçi olup olmadığını kontrol edebilirsiniz yolu yoktur "" geçerlidir. İnsanlar bir işaretçi alır bir işlevi kullandığınızda, bu insanlar ne yaptıklarını biliyor güvenmen gerekiyor. Eğer işaretçi değeri olarak 0x4211 geçtikten sonra 0x4211 adresi işaret güvenmek zorundasın. Ve eğer onlar "yanlışlıkla bazı korkutucu işletim sistemi (İsValidPtr ya da her neyse), hala bir hata içine kayma fonksiyonu ve hızlı başarısız değil kullansan bile soksa o zaman.

Böyle bir şey sinyalizasyon için null işaretçi kullanarak başlayın ve eğer yanlışlıkla geçersiz işaretçiler geçmek eğilimindedir, cidden : işaretçiler kullanın) yeterli bir kütüphane kullanıcısı söyle

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Joe DiFeo

    Joe DiFeo

    7 AĞUSTOS 2012
  • Samvith V Rao

    Samvith V Ra

    20 EKİM 2006
  • sebsebdouze

    sebsebdouze

    7 ŞUBAT 2008