我在与面试官讨论中遇到了这个问题:
如果我从malloc中分配了4个字节的内存。
如果我从malloc中分配了4个字节的内存。
int *p = (int*) malloc(4);
如果我将指针移动了4个字节。
p++;
现在指针指向的内存已经超出了由malloc分配的4字节内存范围。假设这块内存具有读写权限。
*p=4;
这意味着指针超出了分配的内存范围。
现在考虑一种情况,我分配了一些内存,但是每当我的指针移动到已分配的内存之外并写入该内存时,我想得到通知,但是如何做到呢??
我只能使用malloc和free。
int *p = (int *)malloc(4);
是非常糟糕的 C 代码。在 C 中应该避免对 malloc 的返回值进行强制类型转换。这还假设int
在某些任意平台上是 4 字节,这可能很普遍,但肯定不安全。 - David Hoelzer