Segfault with std.container.Array but not regular dynamic array
Dan
dbdavidson at yahoo.com
Wed Nov 28 10:08:58 PST 2012
On Wednesday, 28 November 2012 at 13:43:04 UTC, Maxim Fomin wrote:
> On Wednesday, 28 November 2012 at 13:09:36 UTC, Dan wrote:
> Actually bug is still there - changing unittest to main() does
> not fix program, even if it seems to run correctly. The problem
> with memory corruption is that it may happen with no observable
> segfaults just because erroneous operation was performed on
> memory which was permitted to be read/written.
>
> Valgrind is tool which may show absence of memory corruption
> errors. Giving your example:
Thanks! I see what you are saying in valgrind. However, the
following shows no problem in valgrind. Same code, only using S
instead of RefCounted!(int).
How could that be explained?
Note that both RefCount!() and your posted S have opAssign,
whereas the one below does not. Perhaps it is a problem only when
there exists a custom opAssign?
Thanks
Dan
---------
import std.typecons;
import std.stdio;
import pprint.pp;
struct S {
int x;
char[] c;
}
//alias RefCounted!(int) Foo;
alias S Foo;
Foo[int] map;
Foo f;
unittest {
int i=3;
map[i] = Foo();
}
More information about the Digitalmars-d-learn
mailing list