ฉันเห็นสองสิ่งที่เกิดขึ้น:
นักเรียนเข้าใจถึงผลกระทบของalloca
อ่านเกี่ยวกับความแตกต่างระหว่างสแต็คและกองและใช้alloca
อย่างระมัดระวัง (ไม่น่า)
นักเรียนคิดว่า "ว้าวเป็นแบบนี้malloc
โดยไม่ต้องกังวลกับfree
" ใช้มันให้มากจนเกินไปให้เกิดการล้นสแต็คและไม่รู้ว่าเกิดอะไรขึ้น
ฉันคิดว่ามันจะดีกว่าถ้าคุณอธิบายalloca
แล้วเรียกใช้รหัสนี้:
#include <malloc.h>
int OverflowMyStack(int start) {
if (start == 0)
return 0;
char * p = (char *)_alloca(4096);
*p = '0';
return OverflowMyStack(start - 1);
}
int main () {
return OverflowMyStack(512);
}
ที่มา: http://www.strchr.com/alloca
แสดงอันตรายให้พวกเขาแล้วบอกพวกเขาว่าอย่าใช้ พวกเขายังคงเรียนรู้เกี่ยวกับสแต็คกับกองดูอันตรายในการดำเนินการและสามารถไปกับสิ่งมาตรฐาน