Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6830461
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 26, 20262026-05-26T22:37:13+00:00 2026-05-26T22:37:13+00:00

What is the best way to copy a string into a raw memory buffer

  • 0

What is the best way to copy a string into a raw memory buffer in C#?

Note that I already know how and when to use String and StringBuilder, so don’t suggest that 😉 – I’m going to need some text processing & rendering code and currently it looks like a memory buffer is both easier to code and more performant, as long as I can get the data into it. (I’m thinking of B-tree editor buffers and memory mapped files, something which doesn’t map well into managed C# objects but is easily coded with pointers.)

Things I already considered:

  • C++/CLI can do the thing, there is PtrToStringChars in vcclr.h which can then be passed to memcpy, but I’m usually preferring only having one assembly and merging the IL from multiple languages is something I like to avoid. Any way to rewrite that function in C#?

  • System.Runtime.InteropServices.Marshal has functions which copy the string, but only to a newly allocated buffer. Couldn’t find any function to copy into an existing buffer.

  • I could use String.CopyTo and use an array instead of a memory buffer, but then I need to pin that buffer a lot (or keep it pinned all the time) which is going to be bad for GC. (By using a memory buffer in the first place I can allocate it outside the managed heap so it doesn’t mess with the GC.)

  • If there’s a way to pin or copy a StringBuilder then that would probably work too. My text usually comes from either a file or a StringBuilder, so if I can already move it into the memory buffer at that point it never needs to go through a String instance. (Note that going from StringBuilder to String doesn’t matter for performance because this is optimized to not make a copy if you stop using the StringBuilder afterwards.)

  • Can I generate IL which pins a String or StringBuilder? Then instead of writing the copy-function in C# I could generate a DynamicMethod by emitting the required IL. Just now thought of this while writing the question, so I might just try to disassembly the C++/CLI way and reproduce the IL.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-26T22:37:14+00:00Added an answer on May 26, 2026 at 10:37 pm

    enable unsafe code(Somewhere in the project options), then use:

    unsafe
    {
        fixed(char* pc = myString)
        {
        }
    }
    

    and then just use low level memory copies.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

What is the best way to copy a list? I know the following ways,
What is the best way to unit test a method that calls into multiple
Possible Duplicate: What is the best way to clone/deep copy a .NET generic Dictionary<string,
What's the best way to copy a file from a network share to the
What is the best way to copy the contents of one stream to another?
Possible Duplicate: Best way to copy the entire contents of a directory in C#
In PHP, what's the best way to copy an array and keep the keys
What is the best way to add copy to clipboard functionality to a ListView
What is the best way in Perl to copy files to a yet-to-be-created destination
What would be the best way to write a generic copy constructor function for

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.