digitalmars.D.bugs - [Issue 1493] New: Problem with dynamic array
- d-bugmail puremagic.com (30/30) Sep 11 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1493
- d-bugmail puremagic.com (14/14) Sep 11 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1493
- d-bugmail puremagic.com (7/7) Sep 11 2007 http://d.puremagic.com/issues/show_bug.cgi?id=1493
http://d.puremagic.com/issues/show_bug.cgi?id=1493 Summary: Problem with dynamic array Product: D Version: 1.021 Platform: PC OS/Version: Windows Status: NEW Severity: major Priority: P2 Component: DMD AssignedTo: bugzilla digitalmars.com ReportedBy: keystuffs netscape.net The dynamic array seems to be shared with all instances of a class: class A { int array1[] = [0]; // dynamic array int array2[1] = [0]; // static array } int main(char[][] p) { A a1 = new A(); A a2 = new A(); a1.array1[0] = 10; std.stdio.writefln(a1.array1[0]); // write 10: OK std.stdio.writefln(a2.array1[0]); // write 10: should be 0 a1.array2[0] = 20; std.stdio.writefln(a1.array2[0]); // write 20: OK std.stdio.writefln(a2.array2[0]); // write 0: OK return 0; } So I think that the variable array1 is shared with the objects a1 and a2. --
Sep 11 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1493 default_357-line yahoo.de changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |default_357-line yahoo.de This isn't a bug. An array, behind the scenes, is nothing but a pointer and a length. So the dynamic array in your class gets initialized with a specific pointer and length, which is the same for all instances because the _literal_ is the same. The correct thing to do here is initialize the dynamic array in the constructor, for example, by dup-ing it :) --downs --
Sep 11 2007
http://d.puremagic.com/issues/show_bug.cgi?id=1493 matti.niemenmaa+dbugzilla iki.fi changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |INVALID --
Sep 11 2007