Click here to Skip to main content
15,909,822 members
Home / Discussions / C#
   

C#

 
SuggestionRe: Question about (char* from string) ,(string from char*) and (char* to char) Pin
Richard Deeming29-Jan-24 3:56
mveRichard Deeming29-Jan-24 3:56 
Quote:
C#
char[] charArr = new char[str.Length];
for (int i = 0; i < str.Length; i++)
{
    charArr[i] = str.ToCharArray()[i];
}
That code is horrendously inefficient!

Every call to the ToCharArray method[^] creates a new array containing a copy of every character in the string.

For a string of 100 characters, you are creating 101 copies of that string, just to return a single copy.

Either use:
C#
char[] charArr = new char[str.Length];
for (int i = 0; i < str.Length; i++)
{
    charArr[i] = str[i];
}
or simply:
C#
char[] charArr = str.ToCharArray();

Quote:
C#
fixed (char* charPtr = charArr)
{
    return charPtr;
}
As suggested by the enclosing braces, the fixed keyword[^] pins a managed object until the end of the enclosing block.

You return the pointer from the method, which escapes the fixed block. Once you do that, there is no guarantee that the pointer will still be valid. The GC is free to move the array around in memory as much as it wants. Whilst it may appear to work in your simple test, you can guarantee that as soon as you try to do this in "real" code running on a production system, the GC will kick in at the most inconvenient moment, move your array, and leave you with either an impossible-to-diagnose crash, or worse, corrupt data.

It's not entirely clear what you're trying to do with these functions. But what is clear is that they're not going to do what you expect them to.



"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer

GeneralRe: Question about (char* from string) ,(string from char*) and (char* to char) Pin
Jens Eckervogt19-May-24 8:01
Jens Eckervogt19-May-24 8:01 
QuestionHow to customize the default .Net Framework Validation Error Messages Pin
Fokwa Divine11-Jan-24 3:30
Fokwa Divine11-Jan-24 3:30 
AnswerRe: How to customize the default .Net Framework Validation Error Messages Pin
Pete O'Hanlon11-Jan-24 3:46
mvePete O'Hanlon11-Jan-24 3:46 
GeneralRe: How to customize the default .Net Framework Validation Error Messages Pin
Fokwa Divine11-Jan-24 4:17
Fokwa Divine11-Jan-24 4:17 
GeneralRe: How to customize the default .Net Framework Validation Error Messages Pin
Pete O'Hanlon11-Jan-24 18:56
mvePete O'Hanlon11-Jan-24 18:56 
Questiondisplay only first 10 files from each directory Pin
picasso29-Jan-24 11:59
picasso29-Jan-24 11:59 
AnswerRe: display only first 10 files from each directory Pin
jschell9-Jan-24 12:39
jschell9-Jan-24 12:39 
AnswerRe: display only first 10 files from each directory Pin
OriginalGriff9-Jan-24 19:54
mveOriginalGriff9-Jan-24 19:54 
AnswerRe: display only first 10 files from each directory Pin
Richard Deeming9-Jan-24 23:44
mveRichard Deeming9-Jan-24 23:44 
GeneralRe: display only first 10 files from each directory Pin
OriginalGriff10-Jan-24 23:27
mveOriginalGriff10-Jan-24 23:27 
GeneralRe: display only first 10 files from each directory Pin
Richard Deeming11-Jan-24 0:45
mveRichard Deeming11-Jan-24 0:45 
QuestionCompatibity Pin
PedroSini9-Jan-24 5:06
PedroSini9-Jan-24 5:06 
AnswerRe: Compatibity Pin
Pete O'Hanlon9-Jan-24 5:15
mvePete O'Hanlon9-Jan-24 5:15 
QuestionGet List Of Physical & Logical Drives Pin
Kevin Marois4-Jan-24 22:15
professionalKevin Marois4-Jan-24 22:15 
AnswerRe: Get List Of Physical & Logical Drives Pin
Richard Deeming4-Jan-24 22:50
mveRichard Deeming4-Jan-24 22:50 
GeneralRe: Get List Of Physical & Logical Drives Pin
Kevin Marois5-Jan-24 7:32
professionalKevin Marois5-Jan-24 7:32 
QuestionI need to convert a string to a float.... Pin
glennPattonWork33-Jan-24 2:15
professionalglennPattonWork33-Jan-24 2:15 
AnswerRe: I need to convert a string to a float.... Pin
Ron Nicholson3-Jan-24 2:23
professionalRon Nicholson3-Jan-24 2:23 
GeneralRe: I need to convert a string to a float.... Pin
glennPattonWork33-Jan-24 2:29
professionalglennPattonWork33-Jan-24 2:29 
GeneralRe: I need to convert a string to a float.... Pin
OriginalGriff3-Jan-24 5:05
mveOriginalGriff3-Jan-24 5:05 
AnswerRe: I need to convert a string to a float.... Pin
Richard Deeming3-Jan-24 2:30
mveRichard Deeming3-Jan-24 2:30 
GeneralRe: I need to convert a string to a float.... Pin
glennPattonWork33-Jan-24 2:51
professionalglennPattonWork33-Jan-24 2:51 
GeneralToList() or not to List. Pin
Gerry Schmitz16-Dec-23 10:10
mveGerry Schmitz16-Dec-23 10:10 
GeneralRe: ToList() or not to List. Pin
Dave Kreskowiak16-Dec-23 13:44
mveDave Kreskowiak16-Dec-23 13:44 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.