immutable string literal?

grauzone none at example.net
Mon Feb 22 07:19:52 PST 2010


Steven Schveighoffer wrote:
> On Mon, 22 Feb 2010 09:27:57 -0500, strtr <strtr at spam.com> wrote:
>> Thanks, I understand.
>> But, how about a runtime error?
>> Isn't a literal placed in easy to identify should-only-read memory?
> 
> A segfault is a runtime error.  The problem with Windows is it doesn't 
> throw an error on writes to its data segment (unlike Linux).  In 
> reality, the result of your program is undefined, so don't expect any 
> help from the compiler/runtime.  There's nothing D1 can do about that.  
> In order for D to intercept that, it would have to instrument every 
> write to memory, and that would cause performance problems like you 
> wouldn't believe.

Windows can protect memory as read-only too. Why dmd doesn't do that is 
a mystery. Even if .exe doesn't support read-only data segments, the 
runtime could have done so in early start-up code.

> The short answer: Just don't do that.
> 
> -Steve


More information about the Digitalmars-d-learn mailing list