用malloc函数给指针一个内存但是它好像比我想象的大……

我给指针一个字节的内存为什么它可以输出这么多位?
按理说isprime=(int)malloc(1);只给了一个字节大小的空间并用指针指向了它,为什么还可以写入isprime[2]、isprime[3]?

img

isprime=(int)malloc(1)这是确实只申请了1字节的地址空间,因为isprime是个指针地址,isprime之后的地址都是可以访问,但只有isprime[0]的最低字节(1字节)的数据是受到保护的。其他地址在另外再申请地址空间时,可能分配给其他地址使用,这样后面的地址里的数据有可能就改变了。不知道这个能明白不?

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^