Segfault on simple struct manipulation
Kirk McDonald
kirklin.mcdonald at gmail.com
Mon Aug 14 18:24:54 PDT 2006
Peter Thomassen wrote:
> Hi there,
>
> I'm coming from PHP and am very new to compiled languages, so maybe I'm
> completely wrong.
>
> I have the following bitsort.d:
>
> import std.stdio;
> struct List {
> uint value;
> }
> void main() {
> List* list;
> writefln("This is shown.");
> list.value = 5;
> writefln("This is not shown.");
> }
>
> And this happens:
>
> peter at tux ~/D $ dmd bitsort.d
> gcc bitsort.o -o bitsort -m32 -lphobos -lpthread -lm
> peter at tux ~/D $ ./bitsort
> This is shown.
> Segmentation fault (core dumped)
> peter at tux ~/D $
>
>
> Is this a bug?
> Peter
In your code. :-) Structs are a value type. Your main() should look like
this:
void main() {
List list;
list.value = 5;
}
By saying "List* list;" you are declaring a pointer to a list, which is
initialized to null. When you then say "list.value", you're
dereferencing a null pointer, which causes the segfault.
--
Kirk McDonald
Pyd: Wrapping Python with D
http://pyd.dsource.org
More information about the Digitalmars-d
mailing list