digitalmars.D - C linkage is fun
- =?ISO-8859-1?Q?Alex_R=F8nne_Petersen?= (14/14) May 24 2012 Just a little gotcha I ran into today:
- =?ISO-8859-1?Q?Alex_R=F8nne_Petersen?= (7/17) May 24 2012 BTW, this is particularly fun if your gc_collect function has arguments
- Robert Clipsham (9/19) May 24 2012 I believe this is by design - the linker will only look for gc_collect()...
- Paulo Pinto (3/25) May 24 2012 That is how I've done my own malloc()/free() with memory usage
Just a little gotcha I ran into today: import core.memory; extern (C) void gc_collect() { assert(false, "nope!"); } void main() { GC.collect(); } -- Alex Rønne Petersen alex lycus.org http://lycus.org
May 24 2012
On 24-05-2012 14:06, Alex Rønne Petersen wrote:Just a little gotcha I ran into today: import core.memory; extern (C) void gc_collect() { assert(false, "nope!"); } void main() { GC.collect(); }BTW, this is particularly fun if your gc_collect function has arguments and tries to read those! -- Alex Rønne Petersen alex lycus.org http://lycus.org
May 24 2012
On 24/05/2012 13:06, Alex Rønne Petersen wrote:Just a little gotcha I ran into today: import core.memory; extern (C) void gc_collect() { assert(false, "nope!"); } void main() { GC.collect(); }I believe this is by design - the linker will only look for gc_collect() in a library if it isn't found in object files you provide. This can be quite useful if you ever need to replace an internal function of something, it can easily go wrong though if your build process changes for some reason (or any number of other reasons!) -- Robert http://octarineparrot.com/
May 24 2012
On Thursday, 24 May 2012 at 12:18:14 UTC, Robert Clipsham wrote:On 24/05/2012 13:06, Alex Rønne Petersen wrote:That is how I've done my own malloc()/free() with memory usage object tracking, long before tools like Valgrind became available.Just a little gotcha I ran into today: import core.memory; extern (C) void gc_collect() { assert(false, "nope!"); } void main() { GC.collect(); }I believe this is by design - the linker will only look for gc_collect() in a library if it isn't found in object files you provide. This can be quite useful if you ever need to replace an internal function of something, it can easily go wrong though if your build process changes for some reason (or any number of other reasons!)
May 24 2012