Daihatsu Tanto รถที่อยากจะมีซักคัน

เนื่องด้วยตอนผมเดินจากรถไฟฟ้าไปทำงานผ่านโชว์รูมรถทุกวันเห็นมันจนอยากได้ไปเลย Daihatsu Tanto ที่มาที่ไปของรถรุ่นนี้ มาจากรุ่น Daihatsu Move specification              เวปญี่ปุ่น Daihatsu

  • 2wd/4wd
  • เครื่องยนต์ 660 cc.
  • 3/4 speed
  • 5 ประตู
  • 43/47 kW/rpm

ราคาก็ตั้งแต่ 1,200,000 – 1,600,00 YEN (หรือประมาณ 4-5 แสนบาท) ผมคิดว่าเป็นรถที่เหมาะกับคนเมืองอย่างผมมาก ประหยัดน้ำมัน นั่งได้หลายคนราคาไม่แพง เน้นรูปเลยดีกว่า

เปิดประตูแบบนี้ได้โดนมาก

ข้างในก็ลงตัว

ขับไปขึ้นรถไฟฟ้า ขับไปซื้อของโลตัส  เดือนนึงคงเติมน้ำมันสองครั้งได้มั้ง (อันนี้เดาเอา) ผมว่าถ้านำเข้ามาขายราคาไม่เกิน 5 แสนเริ่มต้นที่ซัก 4 แสน น่าจะขายดีพอสมควร  SPEC  .PDF file

มันเกิดอะไรกับ malloc () ถึงได้ memory corruption

เรื่องราวมันสั้นๆไม่ยาวมากครับหลังจากที่ผมหัดเขียน ภาษา C บน Linux มา 10 เดือนได้  หลังจากทุกอย่างดูเรียบร้อยใน phase 1 โปรแกรมก็ได้ใช้งานจริงมาหลายเดือนแต่แล้ววันนึงเหตุการณ์ไม่คาดฝันก็คือโปรแกรมตายไปโดยทิ้งร่องรอยไว้ให้ผมแค่นี้

*** glibc detected *** xxx.out  : malloc(): memory corruption: 0x000000001eb64200 ***

#0 0x0000003500a30155 in raise () from /lib64/libc.so.6
#1 0x0000003500a31bf0 in abort () from /lib64/libc.so.6
#2 0x0000003500a6a38b in __libc_message () from /lib64/libc.so.6
#3 0x0000003500a71cd1 in _int_malloc () from /lib64/libc.so.6
#4 0x0000003500a72e8d in malloc () from /lib64/libc.so.6

อย่างที่ทุกคนทราบว่า malloc() ยังไงมันก็คงไม่ผิด ปัญหาก็ย้อนกลับมาที่คนเขียนว่าแล้วมันผิดที่ไหน นั่งหาอยู่เกือบวันเศษๆได้ข้อสรุปว่าอาการนี้เค้าเรียก memory leak ก็มานั่งไล่ในโปรแกรมนั้นว่าตรงไหนที่มันจะ leak (ประมาณ malloc() แล้วก็ไม่มีการ free() ) จนพบว่ามีแบบนั้นจริง  มี functionอยู่ตัวนึงที่เขียนไว้ไม่ดีทำให้เกิดการ malloc ซ้ำไปที่ตัวแปร global นั้นเรื่อยๆจนในที่สุดโปรแกรมก็ตายไป (ไม่ได้ตั้งใจจะขยายนะครับ แต่ถ้าจะขยายผมใช้ realloc)