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

如果我在C++中的一个线程中分配内存,我可以将它分配给另一个线程

  •  15
  • SmacL  · 技术社区  · 16 年前

    编辑: 我目前使用的编译器包括VS2003、VS2008和嵌入式C++ 4、TestPress XP、Vista、Windows 7以及Windows CE/PockPC&的各种调味品。移动电话。因此,基本上所有的微软,但通过一系列深奥的平台。

    6 回复  |  直到 13 年前
        1
  •  20
  •   nos    16 年前

    一般来说,多线程系统上的malloc/new/free/delete是线程安全的,所以这应该没有问题——在一个线程中分配,在另一个线程中取消分配是一件非常常见的事情。

    由于线程是一种实现特性,因此它当然依赖于实现—例如,某些系统要求您与多线程运行时库链接。

        2
  •  6
  •   John Dibling    16 年前

        3
  •  2
  •   JoeG    16 年前

    为了能够在一个线程中分配,在另一个线程中释放,您需要运行时库是线程安全的。自VisualStudio2005以来,Microsoft运行时都是线程安全的,VisualStudio2003提供了单线程和线程安全运行时—显然,如果使用线程,您应该选择与多线程运行时链接。

    至于它是合法的、非法的还是依赖于实施的,我认为以上都不是。它完全超出了标准的范围,因为它根本没有提到线程。

        4
  •  1
  •   Kirill V. Lyadvinsky    16 年前

        5
  •  1
  •   Luca Rocchi    16 年前

    它之所以有效,是因为线程属于同一进程并共享相同的地址空间。。

        6
  •  1
  •   Piotr Smaroń    10 年前