C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
Note: Stackalloc is similar to the alloca function in C, which is a form of malloc that frees its memory automatically.
GetStringStackalloc: This uses the stackalloc operator and is in an unsafe context.
Info: Stackalloc creates a buffer of 51 chars (102 bytes). The memory is initialized to the values "a", "z" and the null char.
Finally: The program returns a string type that was created through the constructor. The string resides on the managed heap.
String ConstructorC# program that uses stackalloc operator
using System;
class Program
{
unsafe static string GetStringStackalloc()
{
// Allocate a character buffer with the stackalloc operator.
// ... Assign the memory to specific letters.
// ... Add the terminal character.
char* buffer = stackalloc char[50 + 1];
for (int i = 0; i < 10; i++)
{
buffer[i] = 'a';
}
for (int i = 10; i < 50; i++)
{
buffer[i] = 'z';
}
buffer[50] = '\0';
return new string(buffer);
}
static void Main()
{
// Call the stackalloc method to get the result string.
// ... Also demonstrate its correctness by using the string constructor.
Console.WriteLine(GetStringStackalloc());
Console.WriteLine(new string('a', 10) + new string('z', 40));
}
}
Output
aaaaaaaaaazzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
aaaaaaaaaazzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
So: The memory allocated by the function is freed upon return from the function, when the activation record is popped from the stack.
Thus: Stackalloc is a version of the alloca function in many C implementations.