คำถามติดแท็ก c++

C ++ เป็นภาษาโปรแกรมทั่วไป เดิมได้รับการออกแบบให้เป็นส่วนขยายของ C และมีไวยากรณ์ที่คล้ายกัน แต่ตอนนี้มันเป็นภาษาที่แตกต่างอย่างสิ้นเชิง ใช้แท็กนี้สำหรับคำถามเกี่ยวกับรหัส (จะ) คอมไพล์ด้วยคอมไพเลอร์ C ++ ใช้แท็กเฉพาะรุ่นสำหรับคำถามที่เกี่ยวข้องกับการแก้ไขมาตรฐานเฉพาะ [C ++ 11], [C ++ 14], [C ++ 17] หรือ [C ++ 20] เป็นต้น

2
std :: map ขยายรายการ initializer จะเป็นอย่างไร
หากมีอยู่std::mapรายการเริ่มต้นเพิ่มเติมจะมีลักษณะอย่างไร ฉันได้ลองใช้ชุดค่าผสมของ ... ทุกอย่างที่ฉันคิดได้ด้วย GCC 4.4 แต่ไม่พบสิ่งใดที่รวบรวมได้

8
วิธีติดตามข้อผิดพลาด "ฟรีหรือเสียหายสองเท่า"
เมื่อฉันเรียกใช้โปรแกรม (C ++) ของฉันมันขัดข้องด้วยข้อผิดพลาดนี้ * ตรวจพบ glibc * ./load: ฟรีสองเท่าหรือเสียหาย (! prev): 0x0000000000c6ed50 *** ฉันจะติดตามข้อผิดพลาดได้อย่างไร ฉันลองใช้std::coutคำสั่งprint ( ) แต่ไม่ประสบความสำเร็จ สามารถgdbทำให้ง่ายขึ้น?
94 c++  c  debugging  free 

2
รหัสจาก“ ภาษาโปรแกรม C ++” ฉบับที่ 4 ส่วน 36.3.6 มีลักษณะการทำงานที่กำหนดไว้อย่างชัดเจนหรือไม่
ใน Bjarne Stroustrup ของc ++ เขียนโปรแกรมภาษาส่วนฉบับที่ 4 36.3.6 STL เหมือนการดำเนินงานรหัสต่อไปนี้จะใช้เป็นตัวอย่างของการผูกมัด : void f2() { std::string s = "but I have heard it works even if you don't believe in it" ; s.replace(0, 4, "" ).replace( s.find( "even" ), 4, "only" ) .replace( s.find( " don't" ), 6, "" ); assert( …

7
เป็นไปได้ไหมที่จะแยกความแตกต่างระหว่าง 0 ถึง -0
ฉันรู้ว่าค่าจำนวนเต็ม0และ-0เป็นหลักเหมือนกัน แต่ฉันสงสัยว่าเป็นไปได้ไหมที่จะแยกความแตกต่างระหว่างพวกเขา ตัวอย่างเช่นฉันจะทราบว่าตัวแปรที่ได้รับมอบหมาย-0? bool IsNegative(int num) { // How ? } int num = -0; int additinon = 5; num += (IsNegative(num)) ? -addition : addition; ค่าที่-0บันทึกไว้ในหน่วยความจำเป็นวิธีเดียวกับ0หรือไม่

10
ฉันจะสร้าง "ตัวเว้นวรรค" ในโครงสร้างหน่วยความจำคลาส C ++ ได้อย่างไร
ปัญหา ในบริบทฝังโลหะเปลือยระดับต่ำฉันต้องการสร้างพื้นที่ว่างในหน่วยความจำภายในโครงสร้าง C ++ และไม่มีชื่อใด ๆ เพื่อห้ามไม่ให้ผู้ใช้เข้าถึงตำแหน่งหน่วยความจำดังกล่าว ตอนนี้ฉันทำได้สำเร็จแล้วโดยการใส่uint32_t :96;บิตฟิลด์ที่น่าเกลียดซึ่งจะแทนที่สามคำได้อย่างสะดวก แต่มันจะขึ้นคำเตือนจาก GCC (Bitfield ใหญ่เกินไปที่จะใส่ใน uint32_t) ซึ่งค่อนข้างถูกต้อง แม้ว่าจะใช้งานได้ดี แต่ก็ไม่ค่อยสะอาดนักเมื่อคุณต้องการแจกจ่ายห้องสมุดที่มีคำเตือนหลายร้อยคำ ... ฉันจะทำอย่างถูกต้องได้อย่างไร? เหตุใดจึงมีปัญหาตั้งแต่แรก โครงการที่ฉันกำลังดำเนินการประกอบด้วยการกำหนดโครงสร้างหน่วยความจำของอุปกรณ์ต่อพ่วงต่างๆของสายไมโครคอนโทรลเลอร์ทั้งหมด (STMicroelectronics STM32) ในการทำเช่นนั้นผลลัพธ์คือคลาสที่มีการรวมกันของโครงสร้างต่างๆซึ่งกำหนดการลงทะเบียนทั้งหมดขึ้นอยู่กับไมโครคอนโทรลเลอร์เป้าหมาย ตัวอย่างง่ายๆสำหรับอุปกรณ์ต่อพ่วงที่เรียบง่ายมีดังต่อไปนี้: อินพุต / เอาท์พุตวัตถุประสงค์ทั่วไป (GPIO) union { struct { GPIO_MAP0_MODER; GPIO_MAP0_OTYPER; GPIO_MAP0_OSPEEDR; GPIO_MAP0_PUPDR; GPIO_MAP0_IDR; GPIO_MAP0_ODR; GPIO_MAP0_BSRR; GPIO_MAP0_LCKR; GPIO_MAP0_AFR; GPIO_MAP0_BRR; GPIO_MAP0_ASCR; }; struct { GPIO_MAP1_CRL; GPIO_MAP1_CRH; GPIO_MAP1_IDR; …

7
คุณลักษณะ C ++ 11 ใน Visual Studio 2012
เวอร์ชันตัวอย่างของ Visual Studio 2012 (เวอร์ชันถัดไปหลังจาก VS2010) พร้อมใช้งานแล้ว มีใครรู้บ้างว่าฟีเจอร์ใหม่ของ C ++ 11 ที่รองรับ? (ฉันไม่อยู่ในสถานะที่จะทดลองใช้ในขณะนี้)

2
ช่องโหว่ JPEG of Death ทำงานอย่างไร?
ฉันได้อ่านเกี่ยวกับการใช้ประโยชน์จาก GDI + รุ่นเก่าบน Windows XP และWindows Server 2003 ที่เรียกว่า JPEG of death สำหรับโครงการที่ฉันกำลังทำอยู่ การใช้ประโยชน์สามารถอธิบายได้ดีในลิงค์ต่อไปนี้: http://www.infosecwriters.com/text_resources/pdf/JPEG.pdf โดยทั่วไปไฟล์ JPEG จะมีส่วนที่เรียกว่า COM ที่มีฟิลด์ความคิดเห็น (อาจว่างเปล่า) และค่าสองไบต์ที่มีขนาดของ COM หากไม่มีความคิดเห็นขนาดคือ 2 ตัวอ่าน (GDI +) จะอ่านขนาดลบสองและจัดสรรบัฟเฟอร์ที่มีขนาดเหมาะสมเพื่อคัดลอกความคิดเห็นในฮีป การโจมตีเกี่ยวข้องกับการวางมูลค่า0ในสนาม GDI + หัก2นำไปสู่ค่า-2 (0xFFFe)ที่ได้รับการแปลงเป็นจำนวนเต็มไม่ได้ลงนามโดย0XFFFFFFFEmemcpy โค้ดตัวอย่าง: unsigned int size; size = len - 2; char *comment = (char *)malloc(size + …
94 c++  security  memcpy  malware 

7
วิธีสร้าง c ++ fstream จากตัวอธิบายไฟล์ POSIX
โดยพื้นฐานแล้วฉันกำลังมองหา fdopen () เวอร์ชัน C ++ ฉันได้ค้นคว้าข้อมูลเล็กน้อยเกี่ยวกับเรื่องนี้และเป็นหนึ่งในสิ่งที่ดูเหมือนว่ามันควรจะง่าย แต่กลับกลายเป็นว่าซับซ้อนมาก ฉันพลาดอะไรบางอย่างในความเชื่อนี้ (คือมันง่ายจริงๆ)? ถ้าไม่มีมีห้องสมุดดีๆสักแห่งที่จัดการเรื่องนี้ได้หรือไม่? แก้ไข: ย้ายโซลูชันตัวอย่างของฉันไปยังคำตอบแยกต่างหาก

8
เหตุใดการแยกสตริงใน C ++ จึงช้ากว่า Python
ฉันกำลังพยายามแปลงรหัสจาก Python เป็น C ++ เพื่อเพิ่มความเร็วและเพิ่มทักษะ C ++ ที่เป็นสนิมของฉัน เมื่อวานนี้ฉันรู้สึกตกใจเมื่อการใช้งานบรรทัดการอ่านอย่างไร้เดียงสาจาก stdin ใน Python เร็วกว่า C ++ มาก (ดูสิ่งนี้ ) วันนี้ในที่สุดฉันก็ค้นพบวิธีการแยกสตริงใน C ++ ด้วยการรวมตัวคั่น (ความหมายที่คล้ายกันกับการแยกของ python ()) และตอนนี้ฉันกำลังประสบกับ deja vu! รหัส C ++ ของฉันใช้เวลาทำงานนานกว่ามาก (แม้ว่าจะไม่ใช่ลำดับความสำคัญมากกว่าเช่นเดียวกับบทเรียนเมื่อวานนี้) รหัส Python: #!/usr/bin/env python from __future__ import print_function import time import sys count = 0 start_time …

7
C / C ++ พร้อม GCC: เพิ่มไฟล์ทรัพยากรลงในไฟล์ปฏิบัติการ / ไลบรารีแบบคงที่
ใครมีความคิดที่จะรวบรวมไฟล์ทรัพยากรใด ๆ แบบคงที่ในไฟล์ปฏิบัติการหรือไฟล์ไลบรารีที่แชร์โดยใช้ GCC ตัวอย่างเช่นฉันต้องการเพิ่มไฟล์รูปภาพที่ไม่มีวันเปลี่ยนแปลง (และถ้าเป็นเช่นนั้นฉันก็ต้องแทนที่ไฟล์อยู่ดี) และไม่ต้องการให้พวกเขาอยู่ในระบบไฟล์ ถ้าเป็นไปได้ (และฉันคิดว่าเป็นเพราะ Visual C ++ สำหรับ Windows ก็ทำได้เช่นกัน) ฉันจะโหลดไฟล์ที่เก็บไว้ในไบนารีของตัวเองได้อย่างไร? ไฟล์ปฏิบัติการแยกวิเคราะห์ค้นหาไฟล์และดึงข้อมูลออกมาหรือไม่ อาจมีตัวเลือกสำหรับ GCC ที่ฉันยังไม่เคยเห็น การใช้เครื่องมือค้นหาไม่ได้คายสิ่งที่ถูกต้องออกไป ฉันต้องการสิ่งนี้เพื่อใช้กับไลบรารีที่ใช้ร่วมกันและไฟล์ปฏิบัติการ ELF ปกติ ขอความช่วยเหลือใด ๆ

1
จะใช้ตัวแปร goto รั่วหรือไม่?
เป็นความจริงหรือไม่ที่gotoกระโดดข้ามบิตของรหัสโดยไม่เรียกผู้ทำลายและสิ่งของ? เช่น void f() { int x = 0; goto lol; } int main() { f(); lol: return 0; } จะไม่xรั่วไหล?
94 c++  goto 

3
วิธีตั้งค่าเบรกพอยต์บนไลบรารีที่แชร์ในอนาคตด้วยแฟล็กคำสั่ง
ฉันกำลังพยายามทำให้เซสชัน gdb อัตโนมัติโดยใช้--commandแฟล็ก ฉันกำลังพยายามตั้งค่าเบรกพอยต์สำหรับฟังก์ชันในไลบรารีที่ใช้ร่วมกัน (เทียบเท่ากับ Unix ของ DLL) cmds.gdb ของฉันมีลักษณะดังนี้: set args /home/shlomi/conf/bugs/kde/font-break.txt b IA__FcFontMatch r อย่างไรก็ตามฉันได้รับสิ่งต่อไปนี้: shlomi: ~ / progs / bugs-external / kde / font-ทำลาย $ gdb --command = cmds.gdb ... GNU gdb 6.8-2mdv2009.0 (Mandriva Linux รีลีส 2009.0) ลิขสิทธิ์ (C) 2008 Free Software Foundation, Inc. ใบอนุญาต GPLv3 +: …
94 c++  c  linux  unix  gdb 

5
จำเป็นต้องใช้ฟังก์ชันเสมือนทั้งหมดในคลาสที่ได้รับมาหรือไม่?
นี่อาจดูเหมือนคำถามธรรมดา ๆ แต่ฉันหาคำตอบไม่ได้จากที่อื่น สมมติว่าฉันมีสิ่งต่อไปนี้: class Abstract { public: virtual void foo() = 0; virtual void bar(); } class Derived : Abstract { public: virtual void foo(); } เป็นไปได้หรือไม่ที่คลาส Derived ไม่ได้ใช้ฟังก์ชัน bar () จะเกิดอะไรขึ้นถ้าไม่ใช่คลาสที่ได้รับทั้งหมดของฉันต้องการฟังก์ชัน bar () แต่บางคลาสทำ ฟังก์ชันเสมือนทั้งหมดของคลาสพื้นฐานนามธรรมจำเป็นต้องนำไปใช้ในคลาสที่ได้รับมาหรือเพียงแค่ฟังก์ชั่นเสมือนจริงเท่านั้น ขอบคุณ
94 c++  inheritance 

6
วิธีใช้ doxygen เพื่อสร้างไดอะแกรมคลาส UML จากซอร์ส C ++
ฉันค้นหาเนื้อหาบางอย่างที่อธิบายวิธีการสร้างไดอะแกรมคลาสง่ายๆด้วย doxygen แต่ไม่พบ ใครสามารถช่วย? ฉันต้องการสร้างไดอะแกรมดังที่แสดงด้านล่างจากชุดไฟล์ C ++ หากมีเครื่องมือที่ดีกว่าเพื่อให้ทำได้ง่ายขึ้นโปรดแจ้งให้เราทราบ

3
ความแตกต่างระหว่าง span และ array_view ในไลบรารี gsl คืออะไร
ในการนำเสนอการประชุมล่าสุดหลายครั้งฉันเคยได้ยิน Bjarne Stroustrup และคนอื่น ๆ พูดถึงแนวทางการเขียนโค้ดใหม่สำหรับ C ++ และบางประเภทก็รองรับ โดยเฉพาะฉันจำตัวอย่างของspan<T>แทนที่จะ(T* p, int n)เป็นพารามิเตอร์ของฟังก์ชัน (ในเวลาประมาณ 32:00 น. ในการพูดคุย); array_view<T>แต่ฉันยังจำคำแนะนำในการใช้ พวกเขาเป็นสองทางเลือก แต่มีแนวคิดเดียวกันหรือไม่? หรือว่าฉันกำลังสับสน แต่จริงๆแล้วมันไม่ได้เกี่ยวข้องกัน ฉันไม่สามารถหาคำจำกัดความที่เชื่อถือได้ว่าทั้งคู่ควรจะเกี่ยวกับอะไร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.