ผู้ใช้ Windows บางส่วนรายงานว่าเห็นข้อผิดพลาด SmartHeap Library ทุกครั้งที่เริ่มเครื่อง ข้อความในป๊อปอัพจะเป็น MEM_BAD_POINTER หรือ MEM_BAD_POINTER ไม่ว่าจะกด OK หรือ Cancel ผลลัพธ์เหมือนกันคือ เครื่องทำงานปกติ แต่ข้อความจะกลับมาอีกครั้งตอนบูทครั้งถัดไป

SmartHeap Library คืออะไร?
SmartHeap เป็นโครงสร้างพื้นฐานเก่า ที่เคยใช้เป็นไลบรารีจัดการหน่วยความจำหลักเมื่อคอมไพล์โปรแกรมบางตัว ในปัจจุบันเกือบไม่มีโปรแกรมไหนยังพึ่งพาคอมโพเนนต์จัดการหน่วยความจำนี้ มักจะมาติดตั้งมาพร้อมกับเวอร์ชันเก่าของ Corel Draw, AutoCAD, Adobe Acrobat เป็นต้น
นี่คือสถานการณ์ที่ทราบว่าก่อให้เกิดข้อความ MEM_BAD_POINTER ในพรอมต์ SmartHeap Library:
- การติดตั้งโปรแกรมเก่าเสียหาย — สาเหตุทั่วไปที่สุด โปรแกรมเก่าที่ใช้ SmartHeap Library เสียหายบางส่วน หรือมีการเปลี่ยนแปลงทำให้ไฟล์บางส่วนเสียหาย ผู้ใช้หลายคนแก้ได้โดยซ่อมแซมหรือลบโปรแกรมเก่าที่เป็นปัญหา
- โปรแกรมเก่าไม่เข้ากันได้บางส่วน — ขึ้นอยู่กับเวอร์ชัน Windows และเวอร์ชันโปรแกรมเก่า อาจหลีกเลี่ยงป๊อปอัพได้โดยตั้งค่าโปรแกรมหลักให้รันใน Compatibility Mode กับ Windows เวอร์ชันที่รองรับเต็มที่
- ค่า Registry เสียหาย — Registry key ที่เหลืออยู่อาจเรียก SmartHeap Library แม้โครงสร้างพื้นฐานแล้วไม่มีอยู่แล้ว การลบ Registry key ที่เหลือด้วยตนเองหรือเครื่องมืออย่าง CCleaner ควรแก้ปัญหาได้ถาวร
- การเปลี่ยนแปลงระบบล่าสุด — Windows Update หรือการติดตั้งไดรเวอร์ใหม่ อาจเป็นสาเหตุ ควรพิจารณาใช้ System Restore คืนสถานะระบบ
- ความขัดแย้งโปรแกรมบุคคลที่สามไม่ทราบสาเหตุ — ปัญหานี้เกี่ยวข้องกับแอปเก่าของ Adobe, Corel, AutoCAD แต่ก็อาจมีโปรแกรมเก่าอื่นที่ใช้ SmartHeap Library ให้ Clean Boot เครื่องและตรวจสอบกระบวนการ/รายการเริ่มต้นที่ก่อให้เกิดปัญหา
นี่คือวิธีแก้ไขที่มีประสิทธิภาพที่สุดที่ผู้ใช้ประสบปัญหาใช้สำเร็จ:
วิธีที่ 1: ซ่อมแซมหรือลบโปรแกรมเก่า (ถ้ามี)
ในกรณีที่บันทึกไว้ส่วนใหญ่ ปัญหานี้เกิดจากการติดตั้งโปรแกรมเก่าที่เสียหายและใช้ SmartHeap Library อยู่ จำเป็นต้องทราบว่าเกิดบน Windows 7, 8.1 และ 10
มักรายงานว่าพบกับ Corel Draw เก่า, Adobe Acrobat Reader, AutoCAD แต่อาจเป็นโปรแกรมเก่าอื่นก็ได้
หากคุณอยู่ในสถานการณ์นี้ ให้ลองซ่อมแซมหรือลบโปรแกรมเก่าก่อน
หมายเหตุ: คุณอาจมีสิทธิ์อัปเกรดเป็นเวอร์ชันใหม่กว่า จึงไม่ควรใช้ซอฟต์แวร์เก่าที่ไม่เข้ากันได้กับ Windows อีกต่อไป
ทำตามขั้นตอนด้านล่าง:
- กด Windows + R เปิด Run พิมพ์ appwiz.cpl กด Enter เปิด Programs and Features

- ในหน้าจอ Programs and Features เลื่อนหาโปรแกรมเก่าที่สงสัยว่าใช้ SmartHeap Module
- คลิกขวาที่โปรแกรมเก่า ดูว่ามีตัวเลือก Repair ไหม หากมี ให้คลิก Repair ตามขั้นตอน แล้วรีสตาร์ทและดูว่าปัญหาหายไหม

หมายเหตุ: หากซ่อมไม่ได้ ตัวเลือกเดียวคือ Uninstall จากเมนูคอนเทกซ์
- หลังบังคับการเปลี่ยนแปลง (ซ่อมหรือลบ) ให้รีบูทและดูว่าข้อความ error กลับมาหรือไม่
หากยังเจอ MEM_BAD_POINTER ให้ไปวิธีถัดไป
วิธีที่ 2: รันโปรแกรมใน Compatibility Mode
ขึ้นอยู่กับโปรแกรมเก่าที่มีปัญหา อาจแก้ได้โดยตั้งค่าให้รันใน Compatibility Mode กับ Windows เวอร์ชันที่รองรับเต็มที่
มีกรณีบันทึกไว้มากมายที่ผู้ใช้แก้ได้โดยตั้งค่า AutoCAD เก่าให้รันใน Windows 7 Compatibility Mode
สำคัญ: วิธีนี้มีผลต่อกรณีที่ Executable หลักของโปรแกรมเก่าถูกเรียกโดย Startup Item ทุกครั้งที่บูท
ไม่ว่าจะเป็น AutoCAD หรือโปรแกรมอื่น ทำตามขั้นตอน:
- คลิกขวาที่ Executable หลักของโปรแกรมเก่าที่สงสัย เลือก Properties

- ในหน้าต่าง Properties คลิกแท็บ Compatibility
- ติ๊กถูก Run this program in compatibility mode for: เลือก Windows 7 หรือเวอร์ชันเก่ากว่าถ้าจำเป็น แล้วคลิก Apply

- รีสตาร์ทเครื่องและดูว่าปัญหาหายที่บูทครั้งถัดไปหรือไม่
หากยังเจอ MEM_BAD_POINTER ให้ไปวิธีถัดไป
วิธีที่ 3: สแกน Registry
หากวิธีข้างต้นไม่ได้ผล ควรพิจารณาว่าอาจเป็น Registry key ที่เหลืออยู่เรียก SmartHeap Library แม้โครงสร้างพื้นฐานหายไปแล้ว
หากเป็นเช่นนี้ ปัญหาจะหายก็ต่อเมื่อระบุและลบ Registry key ที่เป็นปัญหา แต่วิธีทำด้วยตนเองไม่แนะนำ เพราะมีสถานการณ์หลากหลาย ควรใช้ Suite บุคคลที่สามที่ระบุและลบ Registry key ที่เหลือโดยอัตโนมัติ
ขั้นตอนใช้ CCleaner ทำความสะอาด Registry:
- เปิดเบราว์เซอร์ ไปหน้าดาวน์โหลด CCleaner รุ่นล่าสุด ดาวน์โหลดและติดตั้ง


- เปิด CCleaner คลิก Registry ด้านซ้าย
- คลิก Scan for Issues รอจบการสแกน

หมายเหตุ: การดำเนินการนี้จะลบ Registry entry ที่ไม่ได้ใช้งาน ไม่ก่อให้เกิดความเสียหาย เพราะจัดการเฉพาะค่า Registry ที่เสียหายและพาธที่ไม่ชี้ไปที่ปลายทางที่ใช้งานได้
- หลังสแกนจบ สามารถคลิก Clean ทำความสะอาดทั่วไปได้ (เป็นทางเลือก)
- รีสตาร์ทเครื่องและดูว่าสแกน Registry ช่วยแก้ MEM_BAD_POINTER ได้ไหม
หากยังมีปัญหา ให้ไปวิธีถัดไป
วิธีที่ 4: ใช้ System Restore Point
หากเพิ่งเจอข้อผิดพลาดนี้ โอกาสมากที่การเปลี่ยนแปลง OS ล่าสุดเป็นสาเหตุ ผู้ใช้หลายคนแก้ได้โดยใช้ System Restore คืนสถานะเครื่อง
หากไม่เคยใช้ System Restore จำไว้ว่านี้คือยูทิลิตี้ที่คืนสถานะเครื่องไปยังจุดที่ปกติ (หากมี Snapshot พร้อมใช้)
หมายเหตุ: หากไม่ได้เปลี่ยนพฤติกรรมเริ่มต้นของ System Restore ควรมี Snapshot มากมาย เนื่องจากตั้งค่าสร้าง Entry ใหม่ก่อนเหตุการณ์สำคัญ (ติดตั้งโปรแกรมใหญ่, Windows Update สำคัญ ฯลฯ)
หากเข้าใจเครื่องมือนี้ ให้ระบุ Snapshot ที่ดีที่สุดและ Deploy เพื่อแก้ป๊อปอัพจาก SmartHeap Library

หมายเหตุ: จำไว้ว่าหลังดำเนินการ ทุกการเปลี่ยนแปลงหลังจากสร้าง Snapshot นั้นจะหายไป
หลัง Deploy Snapshot เรียบร้อย ให้รีบูทอีกครั้ง และดูว่าป๊อปอัพหายหรือไม่
หากยังเจอ MEM_BAD_POINTER ให้ไปวิธีสุดท้าย
วิธีที่ 5: Clean Boot เครื่องคอมพิวเตอร์
หากวิธีข้างต้นไม่ได้ผล ต้องพิจารณาว่าอาจมีการแทรกแซงของโปรแกรมบุคคลที่สาม หากไม่รู้ว่าตัวไหนเป็นสาเหตุ ให้เริ่มต้นที่ Clean Boot และปิดบริการ/รายการเริ่มต้นของบุคคลที่สามทั้งหมด
นี่จะยืนยันว่า MEM_BAD_POINTER เกิดจากแอปบุคคลที่สามหรือไม่ หากยืนยันแล้ว ให้เปิดใช้งานทีละรายการจนกว่าจะเจอ Error กลับมา
ขั้นตอนแบบละเอียด:
- กด Windows + R พิมพ์ msconfig กด Enter เปิด System Configuration

- ไปแท็บ Services ติ๊ก Hide all Microsoft services หมายเหตุ: ทำอย่างนี้จะซ่อนบริการ Microsoft ที่จำเป็น ไม่ให้ปิดโดยผิดพลาด
- คลิก Disable all แล้ว Apply

- ไปแท็บ Startup คลิก Open Task Manager

- ใน Task Manager ปิด Startup ทุกอย่างที่ไม่ได้ลงนามโดย Microsoft Corporation (คลิกขวา Disable)

- รีบูทเครื่องปกติ รอบูทเสร็จ
- ตอนบูทถัดไป เฝ้าดู MEM_BAD_POINTER หากไม่เกิดขึ้น แสดงว่าสาเหตุคือโปรแกรมบุคคลที่สาม ต่อไปให้เปิดใช้งานทีละรายการที่เคยปิด พร้อมรีสตาร์ทซ้ำ จนกว่าจะเจอ Error กลับมา
หมายเหตุ: หาตัวทำให้เกิดปัญหาแล้ว ให้ลบแอปหลักออก หรือเก็บบริการ/รายการเริ่มต้นที่เป็นปัญหาไว้ปิด - สุดท้าย หากแก้ได้ ให้เปิดใช้งานรายการที่เคยปิดทั้งหมด คืนค่าให้เครื่องไม่ Clean Boot ทุกครั้ง