By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
458,111 Members | 1,580 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 458,111 IT Pros & Developers. It's quick & easy.

determine pointer to point to array or single item during runtime

P: n/a
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
Share this Question
Share on Google+
5 Replies


P: n/a
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

P: n/a
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

P: n/a
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

P: n/a
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

P: n/a

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.