前几天的一道面试题,一直没想明白, 核心问题是这样的:
定义一个数组 比如:
int *a = (int*) malloc(sizeof(int)*20);
a[0]=0; a[1]= 1; .............a[19]= a[19];
现在,a指针 开辟的20个int内存已经存满了,想存第21个数据
问题1: 扩展这个数组,注意内存连续性(就是在将第21个数据 放在紧接着a[19] 地址后面的那块内存里 )
我的想法是:
int *p = (a+20); //指向 a[20]
*p = 20;
这样是不是相当于在一个未知的内存上写数据,应该是不合法的吧, 但是我想不到别的办法。
另外第二个类似
问题2:
内存操作:将指针unsigned char* ptr的内容向后移动4个字节 |