I want to allocate a memory with execute permissions. So I use mprotect to change the permissions.. To get a page aligned memory I use a valloc function.

void * temp = (void *) valloc(x);

and then

if( mprotect(temp, BLOCK_SIZE, (PROT_READ | PROT_WRITE |PROT_EXEC))) {
   exit(-1);
}

Now I want to add more memory to this allocated block. Hence I use a realloc function.

void * new_temp = (void *) realloc(temp, 1024);

Will this reallocate automatically change the permissions of the allocated memory to the ones I had set earlier ?? In case realloc moves the entire block to a different location, what be the permissions of allocated memory earlier and the newly allocated memory?

Should mprotect be used again to get execute permissions memory. And is there a API to realloc on page size boundary like valloc. ?

c++ c
Edit
Report