这是因为 C++ 不进行边界检查。像 Java 和 Python 这样的语言具有边界检查,因此如果您尝试访问越界元素,它们会抛出错误。C++ 的设计原则是不应该比等效的 C 代码慢,而 C 不会进行数组边界检查。因此,如果您尝试访问此越界内存,则程序的行为是未定义的,这在 C++ 标准中有所规定。通常,每当遇到未定义行为时,任何事情都可能发生。应用程序可能会崩溃,可能会冻结,它可能会…… 阅读更多
当声明在 C 中实现/编译的函数时,需要在 C++ 中使用 extern "C"。使用 extern "C" 让编译器知道我们想要使用 C 命名和调用约定。这会导致编译器在我们的 C++ 代码内部进入 C 模式。这是必需的,因为 C++ 编译器在它们的符号表中对名称的处理方式与 C 编译器不同,因此行为也与 C 编译器不同。