好吧管理的陣列,我知道你通常會聲明指針:指針在C++/CLI
void SomeFunction(array<float> ^managedArray)
{
pin_ptr<float> managedArrayPtr = &managedArray[0];
}
這個工程除了當managedArray不包含元素的罰款。在這種情況下,它會引發IndexOutOfRangeException。
在C#中,你可以這樣做:
void SomeFunction(float[] managedArray)
{
fixed (float* managedArrayPtr = managedArray)
{
}
}
這確實沒有內存訪問和工作,即使managedArray是空的。 我是否真的必須檢查我使用指向託管數組的指針的元素數量還是C++/CLI有辦法像C#那樣執行? 它應該使用ASM中的'lea'指令,它沒有內存訪問。
任何幫助,非常感謝!
但是,那麼我不妨檢查一下長度。我希望有一個快捷方式,就像操作員或其他東西一樣。 – user425451 2010-08-19 17:50:40
是的,檢查長度可能是要走的路。我GOOGLE了很多,我無法找到一個優雅的解決方案。 – 2010-08-19 18:07:31