1

如果我尝试编组一个实际上是 NULL 指针的字符串,会发生什么?

4

4 回答 4

2

从本机到托管,您将获得一个空字符串对象。从托管到本机,您将获得一个空指针。这是相当直观的。:-)

于 2009-08-17T02:39:25.903 回答
1

输入为字符串时的 NULL 值将在任一方向编组时转换为 NULL 的相应语言表示(C 为 NULL,C# 为 null)

于 2009-08-17T02:50:35.877 回答
0

那么你觉得呢 ?LPstr 是指向以空字符结尾的 ANSI 字符数组的指针。NULL 显然不是指向空终止数组的指针。它可能会尝试从 NULL 或其他内容中读取。在任何情况下,它的未定义行为都会使您的应用程序崩溃或使其处于未知状态。你为什么要那个?为什么不只是在编组之前检查呢?

于 2009-08-17T02:35:43.940 回答
0

我想它会将 NULL 传递给底层 API,这可能是也可能不是可接受的输入,具体取决于您调用的内容。大多数设计得体的 C(++) 代码都会检查这类事情,但最好仔细检查。

于 2009-08-17T02:38:00.100 回答