jfg*_*gao -1 c memory malloc pointers
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *p = malloc(10);
int i;
for(i=0;i<15;i++)
{
p[i]='c';
printf("INDEX:%d %c\n",i,p[i]);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我不知道为什么在上面的代码中,我只分配了 10 块内存,但我仍然能够访问指针的第 15 个索引。
我不确定为什么,但我认为这是因为这个指针指向一些随机的内存块,而我只是覆盖了这部分内存,但我只分配了特定数量的内存,所以我不确定为什么它会起作用。
有人可以确认吗?
我不知道为什么在上面的代码中,我只分配了 10 块内存,但我仍然能够访问指针的第 15 个索引。
访问超出您请求的内存会导致未定义的行为。如果程序没有崩溃,你应该认为自己很不幸。它会在最不合时宜的时刻做出奇怪的举动。