pythainlp/thai_wikipedia_clean_20230101 huggingface dataset:
ในส่วนวิธีการเล่นแบบแอ็คชั่นผจญภัยของเกมคือส่วน "Labyrinth" ผู้เล่นจะสำรวจพื้นผิวเขาวงกตของ Naju ในร่างหุ่นยนต์คล้ายมนุษย์ โดยเป็นมุมมองจากด้านบน (top-down perspective). ผู้เล่นต้องค้นหาเส้นทางใน Labyrinth ผ่านประตูต่างๆ ไปยังอุปกรณ์ควบคุมความปลอดภัยทั้ง 10 ตัว The Labyrinth ประกอบด้วยทางเดินยาวและห้องต่างๆ ซึ่งระบุพิกัดแบบ X–Y coordinates. แผนที่ซึ่งแสดงรายละเอียดสามารถแสดงได้ในหน้าจอหยุด (pause subscreen) ผู้เล่นสามารถเดินจากหน้าจอหนึ่งไปยังหน้าจอถัดไปได้ แต่ในบางจออาจถูกแยกออกโดย ประตู ที่เรียกว่า "วาร์ปพาเนล". บนวาร์ปพาเนลจะมีสัญลักษณ์ซึ่งผู้เล่นจะสามารถวาร์ปพาเนลนี้ได้หากมีกุญแจสัญลักษณ์ที่ตรงกันกับบนวาร์ปพาเนล วาร์ปพาเนลบางอันจะพาไปยังห้องซึ่งให้เงื่อนงำหรือเรื่องราวของเกม ส่วนอันอื่นๆอาจจะเป็นประตูไปสู่ร้านค้า ห้องพาสเวิร์ด และทางเดินยาว กุญแจสัญลักษณ์จะอนุญาตให้ผู้เล่นผ่านไปยังส่วนต่างๆของthe Labyrinthได้โดยไม่เรียงลำดับ
ในส่วนวิธีการเล่นแบบเกมยิง ชูตเอ็มอัป ของเกมคือส่วน "Dungeon" ผู้เล่นจะต้องต่อสู้ภายใน Naju ในรูปยานอวกาศ Dungeon เป็นเส้นทางต่อเนื่องภายใน Naju ที่เต็มไปด้วยศัตรู Dungeon พบได้ในจากเส้นทางบน Labyrinth. ผู้เล่นต้องบุกเข้าใน Dungeon เพื่อเอาชนะ boss หากสามารถเอาชนะ boss ได้ ผู้เล่นจะสามารถทำลายเส้นทางและกลับสู่ Labyrinth โดยได้รับเพาเวอร์อัพ (ในบางครั้งอาจจะเป็นกุญแจวาร์ปพาเนล)เป็นรางวัล ในขณะที่บางเส้นทางสามารถเข้าได้โดยอิสระ บางเส้นทางจะต้องทำแอ๊คชั่นบางอย่างในห้องคอร์ริดอร์ก่อนจึงจะสามารถเข้าได้ บางห้องใน Labyrinth จะให้เงื่อนงำในการปลดล็อกเส้นทางเหล่านี้ เส้นทางทั้ง 10 เส้นของเกมเป็นเส้นทางไปสู่อุปกรณ์ความปลอดภัยที่ผู้เล่นจำต้องปิดการทำงานทั้งหมดเพื่อเอาชนะเกม
"The Guardian Legend" ถูกสร้างขึ้นสำหรับ Nintendo Famicom โดย Compile ซึ่งเป็นเกมภาคต่อของเกม "Guardic "ซึ่งสร้างขึ้นเมื่อปี 1986 สำหรับเครื่อง MSX, และเริ่มวางจำหน่ายในชื่อ "Guardic Gaiden" ในประเทศญี่ปุ่น โดย Irem เมื่อวันที่ . ผู้อำนวยการสร้าง Masamitsu "Moo" Niitani, ประธานบริษัท Compile และผู้สร้างเกม "Puyo Puyo" ซีรีส์. ทีมผู้สร้างส่วนมากมาจากทีมสร้าง "Guardic" รวมทั้งจาก "Zanac" และ "Blazing Lazers". ภาพหน้าปกของ "Guardic Gaiden" ออกแบบโดยนักวาดภาพประกอบหนังสือนิยายวิทยาศาสตร์ชาวญี่ปุ่น ชื่อ Naoyuki Kato และภาพตัวละคร the Guardian ในร่างหุ่นยนต์คล้ายมนุษย์หญิง. "The Guardian Legend" ได้วางจำหน่ายสำหรับเครื่อง NES ในทวีปอเมริกาเหนือ โดย Brøderbund ในเดือนเมษายน 1989 และวางจำหน่ายในทวีปยุโรปโดย Nintendo ในปี 1990. นิตยสาร "Nintendo Power" ได้พรีวิว "The Guardian Legend" ในเดือนมกราคม 1989 โดยได้วิจารณ์เรื่องรูปแบบเกม ภาพกราฟิก และฉากเกมยิง ชูตเอ็มอัป นิตยสาร Nintendo Power ได้สัญญาว่าจะลงบทความรีวิวทั้งหมดในนิตยสารฉบับถัดมา แต่จำเป็นต้องเลื่อนออกไปเนื่องจากความล่าช้าในการเปิดตัวเกม "The Guardian Legend" ถูกนำออกแสดงที่งาน Winter Consumer Electronics Show ที่ Las Vegas, Nevada ในปี 1989 ก่อนการวางจำหน่าย ในการแสดงครั้งนั้น The Guardian เป็นหนึ่งในแรงดึงดูดหลักของบูธ Brøderbund ร่วมกับ U-Force controller. ในปี 1990 สินค้าคงคลังของ"The Guardian Legend" ถูกขายพร้อมกับสินทรัพย์อื่นๆของ Brøderbund ให้แก่ THQ
เกมได้รับทั้งคำชมและคำตำหนิสำหรับการเป็นเกมหลายประเภท นักวิจารณ์ 4 คนได้เขียนบทความวิจารณ์ในปี 1989 ลงนิตยสาร "Electronic Gaming Monthly" หลังจากการเปิดตัวของเกมในปี 1989 ไม่นานนัก. Steve Harris กล่าวว่าเป็นมากกว่าเกมยิงและเป็นเกมภาคต่อที่ดีเยี่ยมของผู้ที่ชื่นชอบเกม "Zanac". เขาได้กล่าวว่าการเป็นเกมหลายประเภทเป็นการยกระดับของเกมให้สูงขึ้นมาก Ed Semrad ให้ความเห็นว่า เป็นโคลนนิ่งของ "Blaster Master" ที่ดีที่สุดเกมนึง เขายังได้ย้ำความเห็นของ Harris ว่าผู้ที่ชื่นชอบ "Zanac" จะต้องชื่นชอบ "The Guardian Legend" อย่างแน่นอน Donn Nauert ให้ความเห็น่าเกมซ้ำซากและให้ความท้าทายเพียงเล็กน้อยและจะดีกว่านี้ถ้าเกมเป็นเกมยิงแต่เพียงอย่างเดียว เขายังกล่าวถึงพาสเวิร์ดพิเศษ "TGL" ซึ่งผู้เล่นสามารถป้อนเข้าไปเพื่อข้ามส่วน Labyrinth ทั้งหมด Jim Allee ได้เปรียบเทียบกับเกม "Zanac" แต่ได้ย้ำถึงสิ่งที่ Nauert กล่าวเกี่ยวกับการขาดความท้าทายในเกม ยกเว้นการต่อสู้กับบอส อย่างไรก็ตามเขาชื่นชมในภาพรวมของเกมที่สามารถรวมประเภทเกมทั้งสองเข้ากันได้เป็นอย่างดี
"The Guardian Legend" ได้รับรางวัลจากบรรณาธิการของ "Nintendo Power". เกมได้ลงนิตยสารฉบับเดือนกันยายน 1989 โดยติดชาร์ตท๊อป 30 ครั้งแรกในอันดับที่ 9 บรรณาธิการได้ยกย่องตัวเกมและตัวละครเอกว่าเป็นวีรบุรุษที่สามารถแปลงร่างได้ เกมยังสามารถติดอันดับในชาร์ตได้เป็นเวลาเกือบปี เกมได้รับการยอมรับถึงความสำเร็จอย่างมาก เกมได้รับหลายรางวัลจากบรรณาธิการและพนักงานของนิตยสารเกมได้แก่ "Nintendo Power Awards" for 1989, "กราฟิกและเสียงที่ดีที่สุด", "การควบคุมการเล่นที่ดีที่สุด", และ "เกมที่ดีที่สุด" แต่เกมนี้ก็ไม่สามารถชนะอันดับที่ 1 ของแต่ละรางวัลที่ได้รับ "Nintendo Power" ได้ลงบทความแนะนำการเล่น (walkthrough) บางส่วนของเกมในฉบับเดือนพฤศจิกายน 1989
หลังจากวางจำหน่ายในทวีปยุโรป เกมได้รับคำชมเชยในระดับกลางจากนิตยสารเกมของเยอรมัน นอกจากนี้นิตยสาร "Video Games" ได้ให้คำชมเชยว่าเป็นเกมแอ็คชั่นผจญภัยในรูปแบบเดียวกันกับ "The Legend of Zelda "ที่ดี ในเกมผู้เล่นจะต้องคนหาไอเท็มและพื้นที่ลับ นอกจากนี้มุมมองจากด้านบนก็คล้ายกับเกมส่วนมากของนินเทนโด นอกจากนี้เขายังชื่นชมในความหลากหลายและความพิเศษของเกม กลวิธีที่ใช้ในการสู้กับบอสที่หลากหลาย ความยากของตัวเกม และความสมบรูณ์ของภาพกราฟิก นักวิจารณ์จาก "Power Play" ได้เปรียบเทียบ "The Guardian Legend" กับ "The Legend of Zelda" และ "Life Force" เขาชื่นชมความหลากหลายของวิธีการเล่น อาวุธ ความยาก และการผสมผสานระหว่างรูปแบบเกมแอ็คชั่นผจญภัยและเกมยิง แต่เกมขาดระบบ battery-backed RAM สำหรับบันทึกความคืบหน้าในการเล่น รวมทั้งขาดปริศนาที่ท้าทายในเกมแอ็คชั่นผจญภัยและในบางส่วนของเกมยิงที่ยากมากเกินไป
ผลที่เกิดขึ้นตามมา.
เกมยังคงได้รับการชมเชยอย่างต่อเนื่องมากกว่าทศวรรษหลังจากการวางจำหน่าย Lucas Thomas จาก "Evansville Courier &amp; Press" มักจะเปรียบเทียบเกม "The Guardian Legend" กับเกม "The Legend of Zelda" สำหรับเครื่อง NES และเกม "Sigma Star Saga "สำหรับเครื่อง" Game Boy Advance" เขาเน้นยำความสำเร็จของบริษัท Compile ในการรวมเกมประเภทแอ็คชั่นผจญภัย เกมยิง และแอ็คชั่นอาร์พีจีเข้าด้วยกัน ในปี 2008 Thomas ได้ลงบทความใน IGN ยกย่องว่าเกมนี้เป็นอันดับสองของ "Top 10 Unreleased NES Hits" และยืนยันว่า "The Guardian Legend" ได้นำแนวคิดการผสมผสานเกมหลากหลายประเภทไปใช้ในเกมมากกว่าเกม "Blaster Master". ในเดือนตุลาคมปี 2009, IGN ได้จัดลำดับให้"The Guardian Legend" อยู่ในอันดับที่ 87 ของ "Top 100 NES Games of All Time" และได้ยกย่องอย่างเป็นทางการว่า เกมนี้เป็นหนึ่งในเกมที่มีอิทธิพลในประวัติศาสตร์ของอุตสาหกรรมเกม ในเดือนมีนาคมปี 2008 บรรณาธิการของ "Game Informer" ได้กล่าวถึงเกมนี้ว่าเป็นการรวมกันของเกมหลากหลายประเภทที่ดีเยี่ยม และได้เปรียบเทียบเกมนี้ว่าเป็นการรวมกันของเกม "The Legend of Zelda", "Metroid", และ "1942". ในขณะที่เขาชื่นชมเกมในเรื่องความตื่นเต้นและท้าทายในส่วนของเกมยิง แต่เขาได้ตำหนิถึงความซับซ้อนของแผนที่และความยุ่งยากของระบบพาสเวิร์ด ในการให้สัมภาษณ์กับ Gamasutra Mike Engler กล่าวว่า "The Guardian Legend" เป็นเกมที่ดีที่สุดเกมหนึ่งที่ได้เคยออกวางจำหน่าย
อิทธิพลของภาพกราฟิกและเสียงของเกม "The Guardian Legend" . Robert Dewar และ Matthew Smosna จากนิตยสาร "Open Systems Today" อ้างว่าเกมนี้เป็นตัวอย่างของการใช้ graphics co-processors สำหรับเครื่อง NES เพื่อชดเชยข้อจำกัดของ CPU ที่มีความเร็วต่ำในแอปพลิเคชันที่ต้องการการประมวลผลภาพกราฟิกอย่างสูง เขากล่าวว่าความเร็วในการก้าวเดินภายในเกมไม่สามารถทำได้บนเครื่องคอมพิวเตอร์ส่วนบุคคลในยุคนั้น (ปี 1992) โดยปราศจากการใช้กราฟิกบอร์ดราคาแพงและ CPU ที่มีความเร็วสูง. ดนตรีในเกมแต่งโดย Masatomo Miyamoto และ Takeshi Santo ซึ่งยังคงโด่งดังอีกหลายปีหลังจากการวางจำหน่ายเกม Samantha Amjadali จากหนังสือพิมพ์ในเมือง Melbourne ชื่อว่า "The Herald Sun" ได้รายงานว่าดนตรีจากเกมซึ่งได้รับการรีมิกซ์ได้ขึ้นอันดับสองของเว็บไซต์ OverClocked ReMix ในเดือนมีนาคมปี 2002. วงดนตรีที่นำเพลงจากวีดีโอเกมมาเรียบเรียงใหม่อย่าง The Advantage ได้ออกาอัลบั๊มในปี 2006 ชื่อว่า "Elf Titled" ซึ่งได้นำเพลงหนึ่งจากเกมมาเรียบเรียงใหม่
ตัวจัดสรรหน่วยความจำ
ในการเขียนโปรแกรมคอมพิวเตอร์ภาษาซีพลัสพลัส, allocators หรือ ตัวจัดสรรหน่วยความจำ เป็นคอมโพเนนท์ที่สำคัญใน ไลบรารี่มาตราฐานของ C++ ซึ่งได้กำหนด โครงสร้างข้อมูลหลายตัว อย่างเช่น ลิสต์ (List) หรือ รายการ, เซต (Set) โดยทั่วไปโครงสร้างข้อมูลเหล่านี้รู้จักกันในนาม คอนเทนเนอร์ (Container) ลักษณะโดยทั่วไปของคอนเทนเนอร์คือ ความสามารถที่เปลี่ยนขนาดการจองหน่วยความจำได้ในขณะที่โปรแกรมกำลังทำงาน เพื่อที่จะสามารถกระทำการทำงานเหล่านี้ได้มีความจำเป็นอย่างยิ่งที่ต้องใช้ การจัดสรรหน่วยความจำแบบพลวัต (Dynamic memory allocation) โดยการจัดสรรหน่วยความจำจะจัดการคำร้องขอการจัดสรร (allocation) และยกเลิการจัดสรร (deallocation) หน่วยความจำ ทั้งหมดแก่คอนเทนเนอร์ ไลบรารี่มาตราฐานของ C++ กำหนดให้ รูปแบบการจัดสรรหน่วยความเบื้องต้นให้แก่ผู้ใช้งานตั้งแต่เริ่มต้น อย่างไรก็ตามการปรับแต่งการจัดสรรหน่วยความจำ (Custom allocator) เพิ่มเติมก็สามารถทำได้ด้วยผู้พัฒนาโปรแกรม
ตัวจัดการหน่วยความจำ ที่เป็นส่วนหนึ่งของ Standard Template Library (STL) ถูกคิดค้นโดย Alexader Stepanov พวกเขาเริ่มต้นการคิดค้นเพื่อที่สร้างไลบรารี่ที่สามารถยืดหยุ่น และเป็นอิสระกับแบบจำลองหน่วยความจำระดับล่าง (Underlying memory model) ที่อนุญาตให้ผู้พัฒนาโปรแกรมใช้ตัวชืี้ที่กำหนดเอง (Custom pointer) และ การอ้างถึง ประเภทข้อมูลในไลบรารี่ อย่างไรก็ตามในขั้นตอนของการปรับ STL เข้ากับมาตราฐานของ C++ คณะกรรมการวางมาตราฐาน C++ (C++ standardiaztion committee) ได้ตระหนักถึง การทำแบบจำลองหน่วยความจำในแบบแอ็บสแตรค (Abstraction of the memory model) ทั้งหมด จะส่งผลเสียอย่างมากต่อประสิทธิภาพ จนไม่สามารถยอมรับได้ เพื่อที่จะแก้ไขปัญหานี้ ข้อกำหนดของตัวจัดสรรหน่วยความจำจึงถูกสร้างให้มีข้อจำกัดมากขึ้น ส่งผลให้ ระดับปรับปรุงแก้ใขที่ถูกกำหนดด้วยตัวจัดการหน่วยความจำมีข้อจำกัดกว่าในตอนที่เริ่มต้นในแนวคิดของ Stepanov
แม้กระนั้น ยังคงมีหลายๆ สถานการที่มีความจำเป็นในการปรับปรุงตัวจัดการหน่วยความจำ และในหลายๆเหตุผลในการปรับแต่งตัวจัดการหน่วยความจำนั้น ก็เพื่อเพิ่มประสิทธิ์ภาพในการจัดสรรหน่วยความจำ ให้ใช้หน่วยความจำแบบพูล (Memory pools) และการเอนแคบซูเลท (Encapsulating) การเข้าถึงของประเภทหน่วยความจำหลายชนิด อย่างเช่น หน่วยความจำที่ใช้ร่วมกัน (Shared memory) และ การกำจัดหน่วยความจำที่ไม่ใช้ (Garbage collected memory) โดยเฉพาะอย่างยิ่งโปรแกรมที่ใช้หน่วยความจำขนาดเล็กบ่อยๆ จะได้รับประโยชน์จากการปรับปรุงตัวจัดสรรหน่วยความจำ ทั้งในแง่ของ การทำงานของโปรแกรม และขนาดของการใช้งานหน่วยความจำ
ข้อมูลเพิ่มเติม : Standard Template Library
Alexander Stepanov และ Meng Lee นำเสนอ Standard Template Library (STL) แด่คณะกรรมการวางมาตราฐาน C++ (C++ standardiaztion committee) ใน เดือนมีนาคม 2537 แม้ว่าจะประสพปัญหาบ้างแต่ไลบราลี่ก็ได้รับการอนุมัติในเบื้องต้น โดยเฉพาะอย่างยิ่ง Stepanov ได้ถูกร้องขอให้ทำการสร้างไลบรารี่ของคอนเทนเนอร์ ที่เป็นอิสระจากแบบจำลองหน่วยความจำระดับล่าง ซึ่งนำไปสู่การสร้างตัวจัดสรรหน่วยความจำ และในเวลาต่อมา อินเทอร์เฟสของ STL คอนเทนเนอร์ได้ถูกเขียนขึ้นใหม่ เพื่อที่จะสามารถใช้ตัวจัดสรรหน่วยความจำได้
ในการปรับปรุง STL ให้ถูกบรรจุในไลบรารี่มาตราฐานของ C++ Stepanov ได้ทำงานอย่างใกล้ชิดกับสมาชิกในกรรมการวางมาตราฐานบางท่าน ซึ่งประกอบด้วย Andrew Koenig และ Bjarne Stroustrup ซึ่งเป็นคนสังเกตว่า การปรับแต่งตัวจัดสรรหน่วยความจำมีความเป็นไปอย่างมากที่จะดำเนินการในการจัดเก็บ STL คอนเทนเนอร์อย่างถาวร ซึ่งขณะนั้น Stepanov กำลังพิจารณา "important and interesting insight" "ส่วนที่สำคัญและ หน้าสนใจ"
ในตอนเริ่มต้นข้อเสนอของตัวจัดสรรหน่วยความจำไม่สามารถทำงานร่วมในการใช้งานบางกรณี ที่ยังไม่เป็นที่ยอมรับจากคณะกรรมการวางมาตราฐาน คือความสามารถของการกำหนดชื่อที่ใช้ใน เทมเพลตอาร์กิวเมนต์ (Templat argument) เป็นเทมเพลตของตัวมัน ตั้งแต่ฟีเจอร์ (Feature) แบบนั้นไม่สามารถถูกคอมไพล์ (Compile) ได้ในทุกคอมไพเลอร์ (Compiler) ที่มีในตอนนั้น ตามคำกล่าวของ Stepanov ว่า "ทำให้ Bjarne [Stroustrup] และ Andy [Koenig] ใช้เวลาอย่างมากในการที่ จะพยายามตรวจสอบว่าพวกเราได้ทำการพัฒนาอย่างถูกต้องหรือไม่ กับฟีเจอร์ที่ไม่สามารถใช้งานได้" ทำให้ไลบรารี่ที่เคยให้งานพอร์ยเตอร์ และ เรฟเฟอร์เรนซ์ไทป์โดยตรง ถูกเปลี่ยนมาใช้การอ้างถึง ไทป์โดยตัวจัดสรรหน่วยความจำแทน Stepanov ได้กล่าวถึงตัวจัดสรรหน่วยความจำในตอนหลังว่า "ข้อดีของฟีเจอร์ใน STLคือ การเจาะจงที่จะสนใจแต่ประเภทข้อมูลที่มีขึ้นกับอุปกรณ์(...) ซึ่งถูกเอนแคบซูเลท (Encapsulated) ภายในโค้ดราวๆ 16 บรรทัด"
ในขณะที่ Stepanov เริ่มต้นให้ความสนใจทำการเอนแคปซูเลทแบบจำลองหน่วยความจำทั้งหมดในตัวจัดสรรหน่วยความจำ คณะกรรมการก็ได้ตระหนักถึงความประสิทธิ์ภาพที่ลดลงจนนำไปสู่ระดับที่ไม่สามารถยอมรับได้ของขั้นตอนการทำเอนแคปซูเลท เพื่อที่บรรเทาปัญหานี้ ทางคณะกรรมการได้มีการเพิ่มถ้อยคำของเกี่ยวกับประสิทธิ์ภาพในความประสงค์ของการทำตัวจัดสรรหน่วยความจำ โดยเฉพาะอย่างยิ่ง การอิมพลีเมนต์ ตัวบรรจุ หรือ คอนเทนเนอร์ (Container) ซึ่งรวมไปถึงการกำหนดชนิดของตัวจัดสรรหน่วยความจำสำหรับพอร์ยเตอร์ ความสัมพันธ์ของประเภทข้อมูลที่เที่ยบเท่ากับการจัดสรรโดยตัวจัดสรรหน่วยความจำ ทุกๆอินสแตนท์ (Instance) ให้มีค่าเทียบเท่ากับการจุดประสงค์เริ่มต้นของการออกแบบตัวจัดสรรหน่วยความจำ และ ถูกจำกัดอยู่ในการใช้ตัวจัดสรรหน่วยความจำ
ต่อมา Stepanov ได้ให้ความเห็นว่า ในเมือตัวจัดสรรหน่วยความจำ "ไม่ได้เป็นสิ่งที่เลวร้ายใน [แนวคิด] ทางทฤษฏี(...) โชค(ไม่) ดีพวกมัน ไม่สามารถทำได้ในทางปฏิบัติ" เขาสังเกตว่าเพื่อที่จะให้ตัวจัดสรรหน่วยความจำมีประโยชน์อย่างจริงจัง การปรับเปลี่ยน แกนหลักของภาษา (C++) นั้นเป็นสิ่งจำเป็น
ในการปรับปรุงมาตราฐานของ C++ ในปี 2554 ได้ยกเลิกคำสั่งที่ทำให้สับสนของตัวจัดการหน่วยความจำที่ให้ถูกเปรียบเที่ยบกับค่าเท่ากับ และ ถูกใช้เป็นพอร์ยเตอร์ โดยการเปลี่ยนแปลงนี้ทำให้ตัวจัดสรรหน่วยความจำที่เป็น สเตทฟูล (Stateful) สามารถใช้งานได้มากขึ้น และยอมให้ตัวจัดการหน่วยความจำสามารถจัดการ หน่วยความจำร่วมกันที่ไม่อยู่ในโพรเซส (out-of-process shared memory) ได้ จุดประสงค์ของตัวจัดสรรหน่วยความจำในตอนนี้คือเพื่อให้คนเขียนโปรแกรมสามารถควบคุมหน่วยความจำที่อยู่นอกเหนือกับที่ถูกจัดสรรในคอนเทนเนอร์ และแทนที่จะเป็นการปรับแบบจำลองแอดเดรส (Address model) ที่อยู่ภายใต้ส่วนของฮาร์ดแวร์ (Hardware) ในความเป็นจริงการปรับปรุงมาตราฐานได้ยกเลิกความสามารถของตัวจัดสรรหน่วยความจำที่แสดงถึงการขยายไปยัง แบบจำลองแอดเดรสของ C++ (C++ address model) โดยทั่วไป (และจงใจ) ยกเลิกจุดประสงค์ตั้งแต่เริ่มแรกในการทำตัวจัดสรรหน่วยความจำ
คลาส (Class)ใดๆที่เติมเต็มสามารถตัวจัดสรรหน่วยสามารถเป็นเสมือนตัวจัดสรรหน่วยความจำ โดยเฉพาะอย่างยิ่ง คลาสที่สามารถจัดสรรหน่วยความจำสำหรับอ็อปเจ็ค (Object) ไทป์ codice_1ที่ต้องกำหนดประเภทข้อมูล codice_2 สำหรับการประกาศอ็อปเจ็คทั่วไป และการอ้างอิง​ (หรือพอร์ยเตอร์) ไปยังอ็อปเจ็คไทป์ codice_3 ซึ่งควรที่จะให้ ไทป์ codice_4 เป็นข้อมูลประเภทไม่มีสัญญาลักษณ์ที่สามารถรองรับการแสดงข้อมูลขนาดที่ใหญ่ที่สุดของอ็อปเจ็ค A ที่ถูกกำหนดในแบบจำลองตัวจัดสรรหน่วยความจำได้ และคล้ายกับสัญญาลักษณ์ใน codice_5 ที่สามารถแสดงความแตกต่างระหว่างพอร์ยเตอร์สองตัวในตัวจัดสรรหน่วยความจำ
แม้ว่าความสอดคล้องในการทำไลบรารี่มาตราฐานที่อนุญาตที่จะอ้างถึง codice_6และ codice_7ของตัวจัดสรรหน่วยความจำเป็น ไทป์เด็ฟส์ (Typedefs) สำหรับ codice_8และ codice_9 ไลบรารี่ยังสนับสนุนตัวจัดสรรหน่วยความจำตัวที่เป็น เจนเนอร์รอลไทป์ (General type) ตัวอื่นๆด้วย
ตัวจัดสรรหน่วยความจำ (ในที่นี้ขอกำหนดเป็นcodice_10) สำหรับอ็อปเจ็คประเภท codice_3 จะต้องมีฟังก์ชัน (Function) ที่มีซิกเนเจอร์ (Signature) หรือรูปแบบของอาร์กิวเมนต์(Argrument) ในการเรียกใช้งานฟังก์ชัน ด้วย codice_12ฟังก์ชันนี้จะทำการคืนค่าพอร์ยเตอร์ที่ชี้ไปยังอิลิเมนต์ (Element) ตัวแรกของอาเรย์ที่ถูกจัดสรรที่มีขนาดใหญ่พอที่จะรองรับอ็อปเจ็ค n จำนวนที่เป็นไทป์ codice_3 หน่วยความจำเท่านั้นที่ถูกทำการจอง และอ็อปเจ็คยังไม่ได้เกิดการสร้างขึ้นและมากไปกว่านั้น ตัวเลือกพอร์ยเตอร์อาร์กิวเมนต์ (ที่ชี้ไปยังอ็อปเจ็คที่ได้จับจองไว้แล้วด้วย A) สามารถถูกใช้เหมือนการแนะนำเพื่อที่จะดำเนินการเกี่ยวกับที่ของหน่วยความจำใหม่ที่ควรจะจัดสรรตามลำดับเพื่อปรับปรุงหน่วยความจำที่ถูกจอง อย่างไรก็ตามการดำเนินการก็สามารถที่จะละอากิวเมนต์ได้
การสอดคล้องของ codice_14ฟังก์ชันจะยอมรับพอร์ยเตอร์ตัวใดก็ได้ที่สามารถคืนค่าจากการเรืยกใช้ของสามาชิกของฟังก์ชัน codice_15 ก่อนหน้าและจำนวนอิลิเมนต์ที่ถูกยกเลิกการจัดสรร (Deallocate) แต่ไม่ได้ถูกทำลาย (Destruct)
codice_16เป็นฟังก์ชันที่คืนค่าเป็นจำนวนตัวเลขที่มากพอของอ็อปเจ็คไทป์ codice_1ที่คาดว่าจะถูกทำการจัดสรรสำเร็จด้วยการเรียกใช้ codice_18โดยค่าที่คืนกลับจะเป็น codice_19 ดังนั้น สมาชิกของฟังก์ชัน codice_20จะคืน codice_21ที่ชี้ไปยังแอดเดรสของอ็อปเจ็ค และให้ codice_22ของอ็อปเจ็ค
อ็อปเจ็คที่ถูกสร้าง (Construct) และถูกทำลาย (Deconstruct) จะถูกจัดการแยกต่างหากจาก ​การจัดสรร (Allocation) และยกเลิกการจัดสรร (Deallocation) หน่วยความจำ ส่วนตัวจัดสรรหน่วยความจำจะต้องการฟังก์ชัน 2 ตัวคือ codice_23และ ​codice_24 เพื่อที่จะรองรับอ็อปเจ็คที่ถูกสร้างและถูกทำลายตามลำดับ โดยความหมายของฟังก์ชันควรที่จะเทียบเท่ากับเนื้อความข้างล่างนี้
โค้ดโปรแกรมข้างบนนี้จะใช้ไวยากรณ์ (Syntax) codice_25และเรียก destructor ตรงๆ
ตัวจัดสรรหน่วยความจำควรจะทำการสำเนาการสร้าง (Copy-constructible) : ตัวจัดสรรหน่วยความจำของอ็อปเจ็คไทป์ codice_3 สามารถที่จะถูกสร้างจากตัวจัดสรรหน่วยความของอ็อปเจ็คไทป์ codice_27 ถ้าตัวจัดสรรหน่วยความจำ (codice_28) จัดสรรหน่วยความจำที่บริเวณหน่วยความจำ codice_29 แล้ว codice_30สามารถถูกยกเลิกการจัดสรรได้ก็ต่อเมื่อเป็นตัวจัดสรรหน่วยความจำที่เทียบได้กับ codice_28 เท่านั้น
ตัวจัดสรรหน่วยความจำยังต้องการได้รับเทมเพลตคลาส codice_32ที่ยินยอมให้อ้างอิงถึงตัวจัดสรรหน่วยความจำ, พารามิเตอร์ในรูปแบบชนิดอื่น ตัวอย่างเช่น การให้ตัวจัดสรรหน่วยความจำ ไทป์ codice_33 แก่อ็อปเจ็คประเภท codice_34ความสัมพันธ์ของตัวจัดสรรหน่วยความจำกับประเภทข้อมูลcodice_35 ก็ควรจะได้รับเมื่อมีการใช้ codice_36 เช่นกัน
การปรับแต่งตัวจัดสรรหน่วยความจำ.
ประสิทธิภาพเป็นเหตุผลหลักเหตุอันหนึ่งที่ทำให้ต้องมีการปรับแต่งตัวจัดหน่วยความจำ การใช้ตัวจัดสรรหน่วยความจำที่พิเศษในการเพิ่มประสิทธิ์ภาพ หรือการลดจำนวนการใช้งานหน่วยความจำ หรือทั้งสองอย่าง[4] โดยเริ่มต้นตัวจัดสรรหน่วยความจำจะใช้โอเปอเรเตอร์ (Operator) codice_37 ในการจองหน่วยความจำ และบ่อยครั้งที่มีการใช้เป็นเลเยอร์ครอบฟังก์ชันตัวจัดสรรหน่วยความจำแบบฮีป (Heap) ที่จัดการอย่างเหมาะสมกับบล็อคขนาดใหญ่ของหน่วยความจำที่ใช้นานๆครั้งในโปรแกรม ในการใช้งานนี้อาจจะถูกใช้ได้ดีกับคอนเทนเนอร์ขนาดใหญ่ที่จองในหน่วยความจำอย่าง เวคเตอร์ (vector) และ เด็ค (deque - double-ended queue) อย่างไรก็ตามสำหรับคอนเทนเนอร์ที่จำเป็นต้องใช้การจัดสรรสำหรับอ็อปเจ็คขนาดเล็กที่มีลำดับ อย่างเช่น แมค (Map) และ ลิสท์ (list) โดยใช้ตัวจัดสรรหน่วยความจำพื้นฐานจะช้า ปัญหาอื่นที่พบบ่อยอย่าง ตัวจัดสรรหน่วยความจำ malloc (malloc-based allocator) ที่ใช้ร่วมกับการอ้างถึงหน่วยความจำเฉพาะที่ (locality of reference) ที่ไม่เหมาะสม และการกระจัดกระจายของหน่วยความจำ (memory fragmentation) ที่มากเกินไป
วิธีที่นิยมในการปรับปรุงประสิทธิ์ภาพการทำงานคือ การสร้างตัวจัดสรรหน่วยความจำแบบพูล แทนที่จะทำการจองหน่วยความจำในทุกครั้งที่มีการเพิ่มไอเทม หรือการเอาไอเทมออกจากคอนเทนเนอร์ การจองหน่วยความจำขนาดใหญ่ (หน่วยความจำแบบพูล) ไว้ล่วงหน้า หรือถ้าเป็นไปได้ตอนเริ่มเปิดโปรแกรม การตัวจัดสรรหน่วยความจำที่ถูกปรับแต่งจะรองรับการร้องขอการจองหน่วยความจำโดยการคืนค่าของพอร์ยเตอร์ที่ชี้ไปยังหน่วยความจำแบบพูล (Pool memory) จริงๆแล้วการคืนหน่วยความจำสามารถเลือนการทำงานได้จนกว่าจะไม่มีความจำเป็นในการใช้งานหน่วยความจำแบบพูล หรือ อาจกล่าวได้ว่าอายุของหน่วยความจำพูลได้สิ้นสุดลง ตัวอย่างของตัวจัดสรรหน่วยความจำแบบพูลสามารถที่พบได้ในไลบรารี่ Boost ใน C++
หัวข้อการปรับแต่งตัวจัดการหน่วยความจำได้ถูกแก้ไขโดยผู้เชี่ยวขาญ C++ และนักเขียนโปรแกรมหลายต่อหลายคน รวมถึง Scott Meyers จาก "Effective STL "และ ​Andrei Alexandrescu จาก "Modern C++ Design. "Mayers สังเกตว่า ความต้องการสำหรับอินสแตนซ์จากตัวจัดสรรหน่วยความจำมีผลเทียบเท่ากับ ผลกระทบที่ได้รับของการโอนย้ายตัวจัดสรรหน่วยความจำไปยังการไม่มีสถานะ แม้ว่าในมาตราฐานของ C++ จะแสดงถึงไลบรารี่ให้การสนับสนุนตัวจัดสรรหน่วยความจำแบบมีสถานะ (Stateful), Meyers เรียกข้อความวรรคนี้ว่า "a lovely sentiment" that "offers you next to nothing", characterizing the restriction as "draconian"
ในภาษา C++ ของ Bjarne Stroustrup หรืออีกนัยหนึ่งระบุถึง การแสดงการควบคุมอย่างเข้มงวดต่อข้อมูลแต่ล่ะอ็อปเจ็คในตัวจัดสรรหน่วยความจำไม่ได้รุนแรงนัก และชี้ให้เห็นว่าตัวจัดสรรหน่วยความจำส่วนใหญ่ไม่จำเป็นต้องมีสถานะ และจะมีประสิทธิภาพที่ดีขึ้นถ้าไม่มีสถานะ เขากล่าวถึงในกรณี การปรับแต่งตัวจัดสรรหน่วยความจำ(custom allocators), การตั้งชื่อ (Namely), ตัวจัดสรรหน่วยความจำแบบพูล (memory pool allocators), หน่วยความจำแบบแชร์ (shared memory allocators) และตัวกำจัดหน่วยความจำที่ไม่ใช (Garbage collected memory allocator) ซึ่งเขาได้แสดงให้เห็นถึงการดำเนินการสร้างตัวจัดการหน่วยความจำ ที่ใช้หน่วยความจำภายในแบบพูล (internal memory pool) สำหรับการจัดสรรหน่วยความจำอย่างรวดเร็ว และการยกเลิกหน่วยความจำขนาดเล็ก แต่ตั้งข้อสังเกตุว่าการดำเนินการที่เหมาะสมอาจจะถูกกระทำโดยตัวจัดสรรหน่วยความจำที่ถูกอิมพลิเมนท์ (Implementation)แล้ว
ในอีกการใช้การปรับแต่งตัวจัดสรรหน่วยความจำสำหรับการแก้ไขการดีบักหน่วยความจำที่เกี่ยวข้องกับข้อผิดพลาด ควรจะแล้วเสร็จด้วยการเขียนตัวจัดสรรหน่วยความจำที่จัดสรรหน่วยความจำเพิ่มขึ้น ในหน่วยความจำที่ทำการเก็บข้อมูลของการดีบัก อย่างตัวจัดสรรหน่วยความจำที่ถูกใช้เพื่อสร้างความมั่นใจในการจัดสรร และยกเลิกการจัดสรรหน่วยความจำโดยตัวจัดสรรหน่วยความจำประเภทเดียวกัน และกำหนดข้อจำกัดไม่ให้เกินหน่วยความจำที่กำหนด
เมื่อมีการอินแสตนท์คอนเทนเนอร์มาตราฐานของตัวจัดการหน่วยความจำผ่านทางเทมเพลตอาร์กิวเมนต์ ด้วยค่าเริ่มต้น codice_38
template &lt;class T, class Allocator = allocator&lt;T&gt; &gt; class vector;
เหมือนกับทุกๆ C++ คลาสเทมเพลต การอินแสตนท์ของคอนเทนเนอร์ไลบรารีมาตราฐาน จะใช้ความแตกต่างอาร์กิวเมนต์ของตัวจัดสรรหน่วยความจำเป็นตัวแยกแยะประเภทข้อมูล ฟังก์ชันที่คาดว่าจะใช้คืออาร์กิวเมนต์ของ codice_39ซึ่งจะยอมรับแต่เวคเตอร์ (codice_40) ของอินแสตนท์ที่เป็นตัวเริ่มต้นของตัวจัดสรรหน่วยความจำ
การปรับปรุงตัวจัดสรรหน่วยความจำใน C++ 11.
ในมาตราฐานของ C++ ล่าสุดได้ปรับปรุงตัวจัดสรรหน่วยความจำให้สามารถยอมรับ "ขอบเขต" (scope) ของตัวจัดสรรหน่วยความจำ และคอนเทเนอร์ที่ประกอบด้วยการจัดสรรหน่วยความจำที่ซ้อนกัน (Nested) เช่น เวคเตอร์ของสตริง หรือ แมพ (map) ของลิสท์ ของเซต ของประเภทข้อมูลที่ถูกกำหนดโดยผู้ใช้, สามารถมั่นใจว่าหน่วยความจำทั้งหมดได้มาจากคอนเทนเนอร์ของตัวจัดสรรหน่วยความจำ
เอ็นบีเอ็น เทเลวิชั่น
เอ็นบีเอ็น เทเลวิชั่น เป็นสถานีโทรทัศน์ตั้งอยู่ใน นิวคาสเซิล, นิวเซาน์เวล, ออสเตรเลีย. สถานีถูกเริ่มเป็นทางการเมื่อวันที่ 4 มีนาคม 1962 ซึ่งเป็นเหมือนสถานีโทรทัศน์ในเชิงพานิชย์ของภูมิภาคเป็นเจ้าแรกใน นิวเซาน์เวล, และขยายตัวส่งเป็นจำนวน 39 สถานีครอบคลุมครึ่งหนึ่งของทางเหนือรัฐนิวเซาน์เวลและส่วนหนึ่งของทาง ตะวันออกเฉียงใต้ของควีนแลนด์, รวมถึง แทมเวิด, ทวีตเฮด, ลิสมอร์, คอร์ป ฮาร์เบอร์, ฮันเตอร์ รีเจียน และเดอะ โกล คอลส. เจ้าของสถานีคือ ไนท์เน็ตเวิค, กับตารางการดำเนินรายการอย่างใกล้ชิดของ ทีซีเอ็น ในนคนหลวงในซิดนีท์และ บีทีคิว ใน บริทเบน.
ชื่อของสถานี, "เอ็นบีเอ็น", ย่อมาจาก นิวคลาสเซิล บรอดแคสติ่ง นิว เซา เวล. เอ็นบีเอ็นเป็นสถานีภูมิภาคแห่งเดียวเท่านั้นในออสเตรเลียที่ถ่ายทอดข่าวเป็นเวลา 1 ชั่วโมงตลอดเจ็ดวันในสัปดาห์. ตั้งแต่ 2007, มันถูกครอบครองโดยบริษัทแม่ของไนท์ บริษัท ไนท์ เอ็นเตอร์เทนเม้นท์ จำกัด. (แต่ก่อนคือ พีบีแอล มีเดีย), เป็นการทำสถานีลูกที่เลียนแบบจากในนครหลวง. อย่างไรก็ตาม, มันดำเนินงานเหมือนประกอบกิจการร่วมกันกับไนท์ภูมิภาค, และไม่ใช่ส่วนหนึ่งของเครือข่ายหลัก.
เจ้าของดั้งเดิมของ เอ็นบีเอ็น, เดอะ นิวคาสเซิล บรอดแคสติ่ง แอนด์ เทเลวิชั่น คอร์ปเปอร์เรชั่น (เอ็นบีทีซี) ถูกก่อตั้งในเดือนพฤษภาคมปี 1958 เพื่อเริ่มต้นการเตรียมการสำหรับการจัดสรรใบอนุญาตโทรทัศน์ที่จะเกิดขึ้น. ผู้ถือหุ้นหลักใน เอ็นบีทีซี คือ บริษัท ยูไนเต็ด บรอดแคสติ่ง (เป็นเจ้าของโดย ครอบครัวเล็ม, เจ้าของสถานีวิทยุ 2เคโอ), บริษัท แอร์เซล บรอดแคสติ่ง (เจ้าของสถานีวิทยุท้องถิ่น 2เอชดี), และ เดอะ "นิวคาสเซิล มอร์นิ่ง เฮอร์ราด แอนด์ ไมเนอร์ แอดโวเคด" (ที่ถูกซื้อโดย จอห์นเวลล์ แอนด์ ซัน จำกัด). ให้สอดคล้องกับกฎระเบียบของ คณะกรรมการควบคุมบีบีซีของออสเตรเลีย, อย่างน้อย 50% ของ บริษัท จะต้องเป็นเจ้าของท้องถิ่น. 750,000 หุ้นที่ได้รับการทำใช้ได้โดย เดอะ เอ็นบีทีซี (10 เพนนีเทียบเท่ากับ 1 ดอลล่าร์ออสเตรเลลีย). ประมาณ 2,000 คนซื้อหุ้น.
ออสเตรเลียคณะกรรมการควบคุมบีบีซีได้รับใบอนุญาตโทรทัศน์เชิงพาณิชย์สำหรับพื้นที่นิวคาสเซิลและฮันเตอร์ วัลเลย์ที่ เอ็นบีทีซี เมื่อวันที่ 1 สิงหาคม 1961. เอ็นบีเอ็น-3 จะส่งในช่อง วีเอชเอฟ 3, จากเครื่องส่งบนยอด ภูเขาชูการ์โล ใกล้นิวคาสเซิล. อนุมัติสภาการส่งออกเมื่อวันที่ 17 เดือนกรกฎาคมปีนั้น.
โทรจดหมาย, เอ็นบีเอ็น, ได้มาจากชื่อของ บริษัท, นิวคลาสเซิล บรอดเคลสติ่ง แอนด์ เทเววิชั่น คอร์ปอเรชั่น", เอ็น ตัวที่ 2 เป็นตัวแทนของ นิว เซาท์ เวลส์, ตามที่กฎหมายกำหนด. โดยชื่ออย่างไม่เป็นทางการ, ก็คือ นิวคลาสเซิล "บรอดเคลสติ่ง" เน็ตเวิค".
การก่อสร้างเริ่มขึ้นในพฤศจิกายน 1961, ดูแลโดยวิศวกรจาก อาร์ซีเอ ในประเทศสหรัฐอเมริกา. มันเป็นขั้นตอนหลังการ อาร์ซีเอ, สร้างสถานีส่งสัญญาณใหม่ในสีดำและสีขาวในขณะที่โทรทัศน์สีเป็นอย่างรวดเร็วกลายเป็นบรรทัดฐานในประเทศสหรัฐอเมริกา. เก้าสิบเปอร์เซ็นต์ของอุปกรณ์เดิมถูกนำเข้ามาจากประเทศสหรัฐอเมริกาและที่จัดขึ้นในพันธบัตรจนกว่าพวกเขาจะมีกำหนดที่จะติดตั้ง. อุปกรณ์ถูกซื้อมาเพื่อการผลิตสีและการส่งผ่านเพื่อให้มีการปรับเปลี่ยนเพียง 20% ที่จะต้องทำเมื่อสีมาจากเอ็นบีเอ็น. สตูดิโอจะถูกสร้างขึ้นในบล็อกที่มอสบรีครีสเซ็นใกล้ใจกลางเมือง.
การทำงานในเครื่องส่งสัญญาณ 142 เมตร (466 ฟุต) ถูกเลื่อนออกไปโดยการรวมกันของสภาพอากาศสภาพถนนที่นำไปสู่ภูเขาชูการ์โลและการปิดกั้นของรถบรรทุกทำงานในช่วงวันหยุดสุดสัปดาห์. ในช่วงเวลานั้นทีมงานด้านเทคนิคจะอยู่ที่ด้านบนของภูเขา. การก่อสร้างใช้เวลา 8 เดือนในราคา 1.5 ล้านดอลล่าร์และจำเป็นต้องใช้พนักงานในการทำงานเจ็ดวันต่อสัปดาห์ (ยกเว้นในวันคริสต์มาส) เพื่อให้กำหนดเส้นตาย.
ทดสอบสัญญาณที่เกิดขึ้นในช่วงต้นปี 1962 และควรจะเห็นไกลที่สุด่ที่ มูสเวลบรูค, อเวลอน, กาทูมบา, ไลโทกล, โกลเซสเตอร และรอบ ท่าเรือ เก็มบลา.
การเปิดในช่วง.
เอ็นบีเอ็น เทเลวิชั่น เริ่มส่งในวันที่ 4 มีนาคม 1962. โปรแกรมแรกในคืนวันเปิดตัวเริ่มต้นเวลา 18:00, ต้อนรับโดยการบันทึกเทป เดอะ เดน-โพสมาสเตอร์ เจนเนอรัล ชาร์เลส เดวิสสัน. ตามด้วยการทัวร์รอบ เอ็นบีเอ็น สตูดิโอ โดย ผู้จัดการฝ่ายผลิตเดิม, เมททิว แทป.