468,766 Members | 1,484 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 468,766 developers. It's quick & easy.

Detecting dangling memory references

My experience has always been that you're SOL when trying to safely
detect and stop references to dangling memory (non-null pointers to
free'ed blocks) at runtime (C99, Linux).

Maybe somebody clever has worked this out, though?

(Apologies to those who find the question off topic for CUP or CLC)
Nov 14 '05 #1
5 1788
rh***@hotmail.com wrote...
My experience has always been that you're SOL when trying to safely
detect and stop references to dangling memory (non-null pointers to
free'ed blocks) at runtime (C99, Linux).

Maybe somebody clever has worked this out, though?

(Apologies to those who find the question off topic for CUP or CLC)


Before somebody says "fix your code," the pointer is coming to me
from a library. Valgrind is claiming it's a non-null pointer to a
block that hasn't been allocated.
Nov 14 '05 #2
Richard wrote:
My experience has always been that you're SOL when trying to safely
detect and stop references to dangling memory (non-null pointers to
free'ed blocks) at runtime (C99, Linux).

Maybe somebody clever has worked this out, though?

(Apologies to those who find the question off topic for CUP or CLC)


There is electric fence that can help with this too !!
--
Karthik.
Humans please 'removeme_' for my real email.
Nov 14 '05 #3
joe
Richard <rh***@hotmail.com> writes:
rh***@hotmail.com wrote...
My experience has always been that you're SOL when trying to safely
detect and stop references to dangling memory (non-null pointers to
free'ed blocks) at runtime (C99, Linux).

Maybe somebody clever has worked this out, though?

(Apologies to those who find the question off topic for CUP or
CLC)

You'll probably get complaints from clc, but it's certainly on topic
in cup.
Before somebody says "fix your code," the pointer is coming to me
from a library. Valgrind is claiming it's a non-null pointer to a
block that hasn't been allocated.


Then you might want to send that output to the maintainers of the
library and suggest they look into it. What else can you do if you
don't control the code?

Depending on your platform there are probably other memory checkers
you could use. What OS are you doing this on?

Joe
--
"Surprise me"
- Yogi Berra when asked where he wanted to be buried.
Nov 14 '05 #4
Richard wrote:
rh***@hotmail.com wrote...
My experience has always been that you're SOL when trying to
safely detect and stop references to dangling memory (non-null
pointers to free'ed blocks) at runtime (C99, Linux).

Maybe somebody clever has worked this out, though?

(Apologies to those who find the question off topic for CUP or CLC)

Valid for cup I expect, and should be of interest here on clc.

Before somebody says "fix your code," the pointer is coming to
me from a library. Valgrind is claiming it's a non-null pointer
to a block that hasn't been allocated.


You may want to look at my nmalloc for DJGPP. It is close to
standard C, but depends on various things (including pointer
arithmetic and sbrk) and the variadic macros are built around the
gcc (non-standard) technique. Those macros are only needed for
debuggery, but the variadic nature makes it impossible to just
define them out, thus you need gcc.

The point of this is that nmalloc has internal checks for
validity. Some of them are turned off by "#define SAVEMEMORY =
1". I originally had this enabled, which installed guard values
above and below the actual memory assignments, and with it
restored it should be possible to create an "int
_nmalloc_validptr(void *);" to provide close assurance of
validity, by checking that the block is assigned, with valid
forward and backwards pointers, and that the guards have not been
mangled.

If your existing code can be compiled under DJGPP you could try
most of this out with no changes. See the malldbg module in
nmalloc.

<http://cbfalconer.home.att.net/download/nmalloc.zip>

--
"I'm a war president. I make decisions here in the Oval Office
in foreign policy matters with war on my mind." - Bush.
"Churchill and Bush can both be considered wartime leaders, just
as Secretariat and Mr Ed were both horses." - James Rhodes.
Nov 14 '05 #5
jo*@invalid.address wrote in message news:<m3************@invalid.address>...
Richard <rh***@hotmail.com> writes:
rh***@hotmail.com wrote...
My experience has always been that you're SOL when trying to safely
detect and stop references to dangling memory (non-null pointers to
free'ed blocks) at runtime (C99, Linux).
C99? Are you sure?
Maybe somebody clever has worked this out, though?

(Apologies to those who find the question off topic for CUP or
CLC)


You'll probably get complaints from clc, but it's certainly on topic
in cup.


It's on topic in clc and the answer is 'yes, you're sol'. Answers from
cup involving implementation specific codings or third party libraries
will be off topic to clc though, so setting followups would be
appreciated.

--
Peter
Nov 14 '05 #6

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

13 posts views Thread by Aravind | last post: by
11 posts views Thread by John | last post: by
1 post views Thread by Nick Keighley | last post: by
6 posts views Thread by Tony Johansson | last post: by
6 posts views Thread by Matthias Kaeppler | last post: by
20 posts views Thread by __PPS__ | last post: by
9 posts views Thread by prabhat143 | last post: by
1 post views Thread by sekhar_ps | last post: by
10 posts views Thread by Belebele | last post: by
reply views Thread by zhoujie | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.