代码之家  ›  专栏  ›  技术社区  ›  Orca

C与C++之间的编组与责任的杂耍

  •  1
  • Orca  · 技术社区  · 14 年前

    如果我有一个本地C++功能,根据函数的结果,删除某个指针(删除[])的责任在调用方和函数之间不同。当然,我会检查返回值并相应地在C++中执行。

    2 回复  |  直到 14 年前
        1
  •  0
  •   JaredPar    14 年前

    不,只需将本机代码中分配的指针设置为 null 不会释放内存。CLR只能垃圾收集它知道的内存(又称托管内存)。它不知道本机内存,因此无法收集它。必须显式释放在托管类型中拥有所有权的任何本机内存。

    最常见的方法是通过 Marshal

        2
  •  3
  •   Mattias S    14 年前

    不,C++不能做C++中删除[]的操作。您必须使用共享内存分配API,或者编写处理清理的C++包装器。

    推荐文章