ฉันเห็นสองสิ่งที่เกิดขึ้น:
นักเรียนเข้าใจถึงผลกระทบของ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
แสดงอันตรายให้พวกเขาแล้วบอกพวกเขาว่าอย่าใช้ พวกเขายังคงเรียนรู้เกี่ยวกับสแต็คกับกองดูอันตรายในการดำเนินการและสามารถไปกับสิ่งมาตรฐาน