mxGetPr
veya mxRealloc
tarafından döndürülen bir işaretçi verildiğinde, hala uzunluğunu alabilir miyiz? MATLAB, işaretçilerin belleğini yönetdiğinden, sorgulamak için meta verilerini saklıyor mu?mxRealloc veya mxMalloc tarafından döndürülen işaretçinin uzunluğunu biliyor muyuz?
cevap
Sorunuz biraz belirsizdir, bu yüzden bana iki işlevi açıklamaya çalışalım: için
mxGetPr
tam olarak kendi veri (işaretçiyi almak için varolanmxArray
sayısal dizi denir, işaretçidouble
gerçek veri). Bu verilerin uzunluğunu bilmek istiyorsanız, orijinal diziyimxGetNumberOfElements
kullanarak sorgulayabilirsiniz.mxRealloc
ve ilgili işlevler, C içinde kullanılabilen standartmalloc
ailesi işlevine benzer. Yani bunları kullanıyorsanız, belleği ayırdığınızdan beri hangi boyutta olduklarını biliyorsunuz!
mxRealloc
ve ilgili fonksiyonların amacı bir ölçüde otomatik yönetmek belleğe MATLAB izin vermektir; Böylece bir MEX işlevi döndüğünde, MATLAB, mxMalloc
ile ayrılmış olan herhangi bir kayıtlı bellek belleğini serbest bırakmaya özen gösterir.
Şimdi iyi bir kod yazmak, kendi belleğinizi boşaltmanız gerektiği anlamına gelir (bu otomatik bellek yönetimine güvenirseniz işleri yavaşlatabilir), ancak bazı durumlarda kullanışlı olur (bir MEX işlevinin içinde bir hata atmayı düşünün) kaynakların çıkışta serbest kalmasını sağlamak için çirkin goto ifadelerine güvenmek zorundadır).
Eğer internals ile ilgileniyorsanız, sanırım bellek ayırıcılarının çoğu, dizinin kendisinden hemen önce yığın-ayrılmış bir dizinin uzunluğunu depolar (ptr [-1] 'konumundaki bir başlık gibi). Ayrıca, bazı uygulamaların hata ayıklama sürümü, arabellek taşması yakalamalarını denetlemek için ek kontrol için üstbilgi/altbilgi alanında fazladan öğeler depolayabilir. – Amro
- 1. Bir Nest güncellemesinin neden oluştuğunu biliyor muyuz?
- 2. MySQL REGEX, SUBSTRING kullanarak uzunluğunu biliyor mu?
- 3. Grep veya ack tarafından döndürülen uzun eşleşen çizgiler nasıl kırpılır
- 4. Python: JSON'u (URL tarafından döndürülen) List
- 5. Sistem() tarafından döndürülen değer "$?" Ile aynı mı?
- 6. Bir sorgu tarafından döndürülen sütunların sayısı bulma
- 7. Denetleyici tarafından döndürülen anonim türe nasıl erişilir?
- 8. İşlev tarafından döndürülen türün sabitliğini anlama
- 9. Assembly.GetManifestResourceStream tarafından döndürülen akışları kapatmalı mıyım?
- 10. Geçersiz JSON rasgele WCF tarafından döndürülen
- 11. NSLocalizedString() tarafından döndürülen dizeleri kaydetmem gerekir mi?
- 12. PreparedStatement.getGeneratedKeys() tarafından döndürülen bir RowID nasıl kullanılır?
- 13. Elastic Search tarafından döndürülen sonuçların sayısını sınırlandırın
- 14. Pyodbc tarafından döndürülen satırlar JSON serileştirilebilir değil
- 15. Mail :: Başlık mesajlarını değiştirme ActionMailer tarafından döndürülen ileti
- 16. Bir işaretçinin adresini bulma
- 17. İşaretçinin Parse-Server
- 18. MapIterator tarafından döndürülen MultiKey'yi tek tek anahtarlara döndürün
- 19. İşaretçinin herhangi bir adresi veya bellek ayırması var mı?
- 20. Bir döngüde SELECT tarafından döndürülen satırları nasıl güncelleyebilirim?
- 21. Bitline tamamlayıcı işleç tarafından döndürülen veri türü nedir?
- 22. Perl alt yordamı tarafından döndürülen öğelere nasıl seçici olarak erişebilirim?
- 23. Google Kişiler API'sı tarafından döndürülen iletişim bilgilerini PHP
- 24. PostgreSQL bir işlev tarafından döndürülen bir diziden seçim yapabilir mi?
- 25. Kabuk betiğinde python tarafından döndürülen çıkış kodunun işlenmesi
- 26. Aviary tarafından döndürülen görüntünün boyutu, orijinal uygulamadan daha küçük
- 27. Django serializer tarafından döndürülen model verilerine ek veri ekleme
- 28. _stats versus tarafından döndürülen elastik arama belge sayısı _count
- 29. Sosyal Grafik API tarafından döndürülen Facebook alanı listesi
- 30. Öğe çerçevesi tarafından döndürülen iç liste nasıl sıralanır?
['mxGetNumberOfElements'] (http://www.mathworks.com/help/matlab/apiref/mxgetnumberofelements.html) veya [' mxGetDimensions'] (http://www.mathworks.com/help) kullanabilir misiniz? /matlab/apiref/mxgetnumberofelements.html)? – Suever
İşaretçinin uzunluğu her tür için gibidir: 'sizeof (pointer_name)'. Yoksa işaret ettiği nesneyi mi kastediyorsunuz? – Olaf
Sanırım o, ayrılan baytların sayısı anlamına geliyor. – FredK