#include <stdio.h>
#include <stdlib.h>
int main(void) {
int *numbers = (int *) malloc(sizeof(int) * 3);
numbers[0] = 2; numbers[1] = 3; numbers[2] = 4;
numbers = numbers + 1;
/* Далее ещё какой-то код */
return 0;
}
为 type 的 3 个值分配内存int,然后将指向该内存区域的指针右移。
指针左侧的内存是否被认为是空闲的,还是仍然是垃圾?将来使用它是否安全?
后
内存
numbers[-1]只是包含2您自己放在那里的值的内存。你可以随心所欲地联系她。它当然不是“免费的”。为什么会突然?
malloc您只能通过显式调用free或释放分配的内存realloc。而且这段记忆也不是任何“垃圾”。为什么会突然?当你在那里写值时
2,这个值2就存储在那里。内存发生的事情与指向该内存的指针发生的事情无关。