NetBSD-Help archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: free in C++?
Martijn van Buul wrote:
> > The free manpage indicates this is a libc diagnostic. Trying to
> > follow directions, I put
> >
> > extern char *malloc_options;
>
> The manpage calls for _malloc_options. Note the leading underscore.
> Also, since you're calling this from C++, you will need to explicitly
> tell it to use C linkage. This is not a NetBSD issue, but a C-vs-C++
> issue.
>
> try
>
> extern "C" char *_malloc_options;
> char *_malloc_options = "X";
Well, that's odd. I suppose I should have mentioned
$ uname -sr && c++ -v 2>&1 | grep version
NetBSD 2.0
gcc version 3.3.3 (NetBSD nb3 20040520)
My libc agrees with my man page and has no leading underscore:
$ nm /usr/lib/libc.a | grep malloc_options
00000004 C malloc_options
I tried your suggestion and got:
/usr/include/g++/bits/stl_deque.h:1065: undefined reference to
`_malloc_options'
AFAIK your point about external linkage applies only to functions, not
global (file-scope) variables, because only functions have mangled names.
I found using getopt(3) from a C++ function I can *not* declare e.g.
optarg as extern "C".
I suppose this is really a gcc question; I just hoped to get lucky here.
--jkl
Home |
Main Index |
Thread Index |
Old Index