我在面试官的讨论中遇到这个问题:如何检查指针是否写入分配的内存?
如果我从malloc中分配了4个字节的内存。
int *p = (int*) malloc(4);
现在如果我移动指针4个字节。
p++;
而现在指针指向的内存超出malloc分配的4字节内存。我们假设这个内存有读写的权限。
*p=4;
这意味着指针将离开分配的内存。
现在考虑一个情况,我分配了一些内存,但每当我的指针移出分配和写入该内存然后我想知道,但如何?
我只有malloc和免费使用。
C没有自动边界检查。您必须手动跟踪分配的大小。 – EOF
不清楚。为什么不使用工具来完成工作? –
你应该向你的面试官指出'int * p =(int *)malloc(4);'是写得很差的C代码。你应该总是避免在C中返回malloc。“这也假设'int'是一些任意平台上的4字节值,这可能是常见的,但肯定是不安全的。 –