On Saturday, 9 March 2019 at 19:18:38 UTC, ANtlord wrote:
Hello everyone! I've encountered the problem which I already encountered before. Unfortunately, I had no time in the previous time to report and to talk about it. So I decided to play making my own "malloc" function in pure D (betterC) at this time. And I encountered the issue one more time. `this` can be null. How? Please take a look at my project [0]. It gets the current heap break and tries to increase via a free list. So the segfault I meet happens there [1]. Tell me, please. What do I wrong?

[0] https://github.com/ANtlord/deadmemory
[1] https://github.com/ANtlord/deadmemory/blob/master/src/deadmemory/freelist.d#L56

You can end up with a null `this` reference if you dereference a null pointer to a struct and then call a method on the result. For example:

struct S
{
    bool isThisNull() { return &this is null; }
}

void main()
{
    import.std.stdio;
    S* p = null;
    writeln((*p).isThisNull); // true
}

Interactive version: https://run.dlang.io/is/fgT2rS

Reply via email to