我在面試官的討論中遇到這個問題:如何檢查指針是否寫入分配的內存?
如果我從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字節值,這可能是常見的,但肯定是不安全的。 –