468,469 Members | 1,733 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

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

determine pointer to point to array or single item during runtime

hello, may i know how i can determine whether a pointer is pointing to
an array or a single item during runtime?

this is because in certain situation, i need to determine whether to
use delete or delete[] to deallocate the item(s) ponting by the
pointer.

also, is there any way to determine whether the allocated memory
pointed by the pointer is allocated through new or c version calloc/
malloc?

thank you.

Jul 21 '06 #1
5 1581
ya************@gmail.com wrote:
hello, may i know how i can determine whether a pointer is pointing to
an array or a single item during runtime?
There is no portable way.
this is because in certain situation, i need to determine whether to
use delete or delete[] to deallocate the item(s) ponting by the
pointer.
If it's you who allocated it, you know how to delete it. If it's not
you who allocated it, you shouldn't be responsible for deletion.
>
also, is there any way to determine whether the allocated memory
pointed by the pointer is allocated through new or c version calloc/
malloc?
No, not portably. In most cases the developers decide to only use
one method. I say, use 'new' and don't concern youself with anything
else.

V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask
Jul 21 '06 #2
posted:
hello, may i know how i can determine whether a pointer is pointing to
an array or a single item during runtime?

The language provides no such facility built-in.

You would have to keep track of it yourself.

this is because in certain situation, i need to determine whether to
use delete or delete[] to deallocate the item(s) ponting by the
pointer.

A look-up table of some sort. Or perhaps, instead of a pointer:

template <class T>
struct DynmPtr {

T *const p;

bool is_array;
};

also, is there any way to determine whether the allocated memory
pointed by the pointer is allocated through new or c version calloc/
malloc?

The language provides no such facility.

You would have to keep track of it yourself.
--

Frederick Gotham
Jul 21 '06 #3
ya************@gmail.com wrote:
hello, may i know how i can determine whether a pointer is pointing to
an array or a single item during runtime?

this is because in certain situation, i need to determine whether to
use delete or delete[] to deallocate the item(s) ponting by the
pointer.
You can avoid the need to determine that by allocating an array of one
element when you want a single item and always using delete [].

--
Salu2
Jul 21 '06 #4
some compilers internally call malloc when u use "new" to allocate
memory.
I dont think u might be able to detect whether memory is allocated
using new or malloc during run time.

--
sandeep nitta

Julián Albo wrote:
ya************@gmail.com wrote:
hello, may i know how i can determine whether a pointer is pointing to
an array or a single item during runtime?

this is because in certain situation, i need to determine whether to
use delete or delete[] to deallocate the item(s) ponting by the
pointer.

You can avoid the need to determine that by allocating an array of one
element when you want a single item and always using delete [].

--
Salu2
Jul 21 '06 #5

ya************@gmail.com wrote:
hello, may i know how i can determine whether a pointer is pointing to
an array or a single item during runtime?
You can't do so in the general case, but if you stick to a single
healthy rule, your problem is easily solved: simply don't use new[].
new[] really is not needed as there is a far better substitute using
std::vector.
>
this is because in certain situation, i need to determine whether to
use delete or delete[] to deallocate the item(s) ponting by the
pointer.

also, is there any way to determine whether the allocated memory
pointed by the pointer is allocated through new or c version calloc/
malloc?
Nope. new could easily just call malloc.
>
thank you.
/Peter

Jul 21 '06 #6

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

5 posts views Thread by John N. | last post: by
40 posts views Thread by Foobarius Frobinium | last post: by
204 posts views Thread by Alexei A. Frounze | last post: by
1 post views Thread by elziko | last post: by
27 posts views Thread by Erik de Castro Lopo | last post: by
14 posts views Thread by Szabolcs Borsanyi | last post: by
reply views Thread by NPC403 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.