void pointer


 
Thread Tools Search this Thread
Top Forums Programming void pointer
# 1  
Old 06-13-2012
void pointer

hi guys!

Is there such a thing as double void pointer dynamic allocation?
And if so is it something like this?

Code:
int n;
void** a;
a=malloc(n*sizeof(void*));

# 2  
Old 06-13-2012
The void does datatype does not have a size, so that will not work. Yes, void ** can exist.

What are you trying to accomplish?
# 3  
Old 06-13-2012
Quote:
Originally Posted by jim mcnamara
The void does datatype does not have a size, so that will not work. Yes, void ** can exist.

What are you trying to accomplish?
I want to have n void*.
But n is an argument to the function,that's why I thought it would be better if I had an array of void*
# 4  
Old 06-13-2012
The size of void may be undefined(not always -- sometimes it's '1' for the sake of easy pointer math), but the size of void * is definitely defined -- it's the same size as any other pointer.

I don't see any reason you couldn't have an array of void * pointers, and don't see anything wrong with the code you posted..
# 5  
Old 06-13-2012
Quote:
Originally Posted by Corona688
The size of void may be undefined(not always -- sometimes it's '1' for the sake of easy pointer math), but the size of void * is definitely defined -- it's the same size as any other pointer.

I don't see any reason you couldn't have an array of void * pointers, and don't see anything wrong with the code you posted..
The thing is that when I try to refer to one element of the array,that means to one void* it doesn't work.
For example when I had:

Code:
main(){
    void* a;
    fun(&a); //call a function named fun
}

void fun(void** b){
//do things
}

it worked fine.But when I did this for many void* in a loop

Code:
main(){
   void** a;
   a=(void**)malloc(n*sizeof(void*));
   for(int i=0;i<n;i++)
      fun(a[i]);//call the same function as above
}

void fun(void **b){
  //do things
}

it returns segmentation fault.
# 6  
Old 06-13-2012
Quote:
Originally Posted by vlm
it worked fine.But when I did this for many void* in a loop

Code:
main(){
   void** a;
   a=(void**)malloc(n*sizeof(void*));
   for(int i=0;i<n;i++)
      fun(a[i]);//call the same function as above
}

void fun(void **b){
  //do things
}

it returns segmentation fault.
Dont know what code is inside fun but you cant dereference a void*...besides a[i] is a void* not void** so definition of fun needs to change to "void fun(void *b) {...}"
This User Gave Thanks to shamrock For This Post:
# 7  
Old 06-14-2012
Quote:
Originally Posted by shamrock
Dont know what code is inside fun but you cant dereference a void*...besides a[i] is a void* not void** so definition of fun needs to change to "void fun(void *b) {...}"
Actually I changed the
Code:
a[i]

to
Code:
&a[i]

and works fine.
One more question,if I want to send in a function not only one element:
Code:
&a[i]

but all of them do I simply do:

Code:
funct(a);//a is the void**

and if so ,the function's argument is:

Code:
void funct(void** a){
   int cc;
   for(int i=0;i<n;i++)
      memcpy(&cc,*a[i]+sizeof(int),sizeof(int));//and this is how we reffer to each void* pointer of the group?

}

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Programming

Malloc to void pointer fails

I have a function to which I will pass a struct ID and it will return me a string. I will pass a pointer to store the name string and that pointer will be allocated memory by the function called. int ConvertIDToName(void *id, void *name, size_t *size) { int status = 0; ... (5 Replies)
Discussion started by: rupeshkp728
5 Replies

2. HP-UX

converting void pointer to pthread_t on HPUX Itanium

i am trying to convert void pointer to pthread_t on hpux-itanium 64 bit which fails as below "src/file.cpp", line 88: error #2171: invalid type conversion pthread_t tid = reinterpret_cast<pthread_t>(m_threadId); 1 error detected in the compilation of "src/file.cpp" ... (0 Replies)
Discussion started by: skyineyes
0 Replies

3. Shell Programming and Scripting

Eliminate double void line

Hi, I need to eliminate each second void line in a text file. novus MILLENNIO ineo frater in episcopatus , presbyter et diacon|diaconus , (1 Reply)
Discussion started by: mjomba
1 Replies

4. Programming

functions that manipulate void pointers

I have two or more linked lists that have the same names for their "next". For example, struct server_t { sockaddr_in * sin; server_t * next_; } struct player_t { char name; player_t * next_; } How can I get a function to take in either type and manipulate the pointers? I... (3 Replies)
Discussion started by: pyramation
3 Replies

5. Programming

pass a pointer-to-pointer, or return a pointer?

If one wants to get a start address of a array or a string or a block of memory via a function, there are at least two methods to achieve it: (1) one is to pass a pointer-to-pointer parameter, like: int my_malloc(int size, char **pmem) { *pmem=(char *)malloc(size); if(*pmem==NULL)... (11 Replies)
Discussion started by: aaronwong
11 Replies

6. UNIX for Dummies Questions & Answers

void (char *asd)

void asdf(char *asd) is this thing a pointer? (1 Reply)
Discussion started by: khestoi
1 Replies

7. Programming

What is the difference between f(...), f(void) and f()

What is the difference between f(...) , f(void),f() I know that f(void) doesn't take any parameters, but what about f() and f(...) Does the last call of function even exists? (2 Replies)
Discussion started by: purplelightspar
2 Replies

8. Programming

How to return void function pointer

Hello all im trying to build function that will return void function pointer what is mean is ( not working ) the main function void * myClass::getFunction(int type){ if(type==1) return &myClass::Test1; if(type==2) return &myClass::Test2; } void myClass::Test1(){... (1 Reply)
Discussion started by: umen
1 Replies

9. Shell Programming and Scripting

Sorting the Void File in CSH

First and foremost, this is not a homework for your information. I'm just new to using c-shell programming and I just wanted to make my life easier @ work. Say, the file contains the following: ID FILE NO. SL VP 1 1 22 33 1 2 ... (3 Replies)
Discussion started by: ilak1008
3 Replies
Login or Register to Ask a Question