在開發(fā)以MCU為核心的嵌入式系統(tǒng)時,當軟件程序向預設的數(shù)據(jù)結構(通常是一個固定長度的緩沖區(qū))之外的程序調用堆棧的內存地址范圍寫入數(shù)據(jù)時,就會發(fā)生堆棧緩沖區(qū)溢出。這幾乎必然會損壞附近的數(shù)據(jù),甚至會改變返回函數(shù)。如果是有意為之,則這就是我們熟知的堆棧粉碎。防范堆棧緩沖區(qū)溢出的一種方法是使用堆棧canary,因其類似于在煤礦中使用金絲雀偵測毒氣而得名。目前,在以IAR Embedded Workbench為代表的領先開發(fā)工具的所有最新版本中,均已支持堆棧保護功能。