Menu

- Learn
- Documentation
  - Language Reference
  - Library Reference
  - Command-line Reference
  - Feature Overview
  - Articles
- Downloads
- Packages
- Community
  - Blog
  - Orgs using D
  - Twitter
  - Calendar
  - Forums
  - IRC
  - Community Discord
  - Wiki
  - GitHub
  - Issues
  - Get involved
  - Contributors
  - Foundation
  - Security Team
  - Donate
  - Sponsors
- Resources
  - Tour
  - Books
  - Tutorials
  - Tools
  - Editors
  - IDEs
  - run.dlang.io
  - Visual D
  - Acknowledgments
  - D Style
  - Glossary
  - Sitemap

Search
Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

# dmd.root.rmem

Allocate memory using malloc or the GC depending on the configuration.
Authors:
Walter Bright, http://www.digitalmars.com
License:
Boost License 1.0

Source root/rmem.d

Documentation https://dlang.org/phobos/dmd_root_rmem.html

Coverage https://codecov.io/gh/dlang/dmd/src/master/src/dmd/root/rmem.d

pure nothrow @nogc @trusted void* `pureMalloc`(size_t `size`);
pure nothrow @nogc @trusted void* `pureCalloc`(size_t `nmemb`, size_t `size`);
pure nothrow @nogc @system void* `pureRealloc`(void* `ptr`, size_t `size`);
pure nothrow @nogc @system void `pureFree`(void* `ptr`);
  Pure variants of C's memory allocation functions malloc, calloc, and realloc and deallocation function free.
  UNIX 98 requires that errno be set to ENOMEM upon failure. https://linux.die.net/man/3/malloc However, this is irrelevant for DMD's purposes, and best practice protocol for using errno is to treat it as an out parameter, and not something with state that can be relied on across function calls. So, we'll ignore it.
  See Also:
  D's rules for purity, which allow for memory allocation under specific circumstances.
pure nothrow char[] `xarraydup`(const(char)[] `s`);
  Makes a null-terminated copy of the given string on newly allocated memory. The null-terminator won't be part of the returned string slice. It will be at position n where n is the length of the input string.
  Parameters:

  const(char)[] `s` | string to copy

  Returns:
  A null-terminated copy of the input array.
  Examples:

      auto s1 = "foo";
      auto s2 = s1.xarraydup;
      s2[0] = 'b';
      assert(s1 == "foo");
      assert(s2 == "boo");
      assert(*(s2.ptr + s2.length) == '\0');
      string sEmpty;
      assert(sEmpty.xarraydup is null);

pure nothrow T[] `arraydup`(T)(scope const T[] `s`);
  Makes a copy of the given array on newly allocated memory.
  Parameters:

  T[] `s` | array to copy

  Returns:
  A copy of the input array.
  Examples:

      auto s1 = [0, 1, 2];
      auto s2 = s1.arraydup;
      s2[0] = 4;
      assert(s1 == [0, 1, 2]);
      assert(s2 == [4, 1, 2]);
      string sEmpty;
      assert(sEmpty.arraydup is null);

Copyright © 1999-2020 by the D Language Foundation | Page generated by Ddoc on Mon May 11 10:57:53 2020