如果我嘗試編碼一個真正爲NULL指針的字符串,會發生什麼?如果我使用[MarshalAs(UnmanagedType.LPStr)]編組一個空指針,會發生什麼?
回答
從原生到託管,您會得到一個空字符串對象。從託管到本地,你會得到一個空指針。這很直觀。 :-)
很酷,這正是我所希望的。你得到空字符串不是空字符串,絕對不是一個錯誤? – DevDevDev 2009-08-17 02:41:07
是的,沒錯。 – 2009-08-17 03:43:14
那你覺得呢? LPstr是一個指向ANSI字符的以空字符結尾的數組的指針。 NULL顯然不是指向空終止數組的指針。它可能會嘗試從NULL或其他東西讀取。 在任何情況下,它的未定義的行爲,它會導致您的應用程序崩潰或使其處於未知狀態。你爲什麼要這樣?爲什麼不在檢查之前檢查呢?
如何檢查屬性?那麼我需要編組一個IntPtr。 – DevDevDev 2009-08-17 02:37:32
我想它會將NULL傳遞給底層API,這可能是也可能不是可接受的輸入,具體取決於您所調用的內容。大多數體面設計的C(++)代碼檢查這種事情,但最好仔細檢查一下。
當類型爲在任一方向編組(NULL C和空爲C#)當一個字符串將被轉換爲NULL的相應語言表示
- 1. 指向另一個指針的指針 - 會發生什麼?
- 2. 如果我聲明一個指針,那麼類的指針成員會發生什麼?
- 3. 如果我的指針跨越數組邊界會發生什麼?
- 4. 如果我們在增加指針後刪除數組會發生什麼?
- 5. 如果我在對象創建線程中使用編組的COM接口指針,會發生什麼情況?
- 6. 當我們在一個零指針調用一個方法會發生什麼
- 7. 查找指針會發生什麼?
- 8. 如果我將一個右值賦給一個對象,那麼類的指針成員會發生什麼?
- 9. 當我們將一個指針指向NULL時會發生什麼?
- 10. 如果我用空的url調用jQuery.post()會發生什麼?
- 11. 如果我從AsyncTask調用一個方法會發生什麼?
- 12. 重複alloc到同一個指針 - 會發生什麼?
- 13. C++ gmock - 將空指針傳遞給SaveArg時會發生什麼
- 14. 在MSP430上,當我解引用空指針時會發生什麼?
- 15. 如果你編譯一個空的java文件會發生什麼?
- 16. 如果給出一個指向數組中間的指針,delete []會做什麼?
- 17. 更改指針(C)時數組元素會發生什麼?
- 18. 這個void指針發生了什麼?
- 19. 當std :: thread被銷燬時,如果指針指向shared_ptr會發生什麼?
- 20. C++ - 如果我返回一個* = b;`會發生什麼?
- 21. 如果我不指定targetFramework =「4.0」,會發生什麼情況?
- 22. 如果我不在Oracle RDS中指定表空間會發生什麼情況
- 23. 如果我在子進程中使用wait()會發生什麼?
- 24. 如果我在鏈接時不使用-g,會發生什麼
- 25. 如果我在OnPaint()函數中使用CClientDC會發生什麼?
- 26. 如果我在IntentService中使用AsyncTask會發生什麼?
- 27. 如果我mongos 2.6使用帶的mongod會發生什麼3.0
- 28. 如果我使用printf(「one \ 0two」),會發生什麼情況;?
- 29. 如果我爲html表單使用表格會發生什麼?
- 30. 爲什麼在這個編程中使用指針指針?
我不知道一個空值。嘗試一下並告訴我們。 – JoshJordan 2009-08-17 02:32:03
是的,我現在正處在一個混亂的Interop轉換中,在我編譯之前還有一個小時,想知道如何在一個單獨的項目中花費大量的時間測試。 – DevDevDev 2009-08-17 02:35:04