То, что я делаю, просто: перераспределить буфер сообщений на один размер (size_t) больше: size + 1, но мой исходный контент изменяется (как получается «33»?):
message:0x9ead008
0:0 0 0 0 0 0 0 0 0 0
message:0x9ead008
0:0 0 0 33 0 0 0 0 0 0 0
мой код настолько прост, что я не нашел места, где могут скрываться ошибки:
#include <stdlib.h>
#include <string.h>
void print_message(int* message,long n)
{
int i;
for(i=0;i<n;i++)
{
if(i%48==0)
printf("\n%3d:",i/48);
printf("%d ",message[i]);
}
printf("\n");
}
void realloc_test()
{
int n=10;
int* message=(int*)malloc(n*sizeof(int));
printf("message:%p\n",message);
print_message(message,n);
memset(message,0,n);
message=(int*)realloc(message,n+1);
printf("message:%p\n",message);
print_message(message,n+1);
free(message);
}
int main(int argc,char* argv[])
{
realloc_test();
return 0;
}