Segmentation fault
Segmentation fault
本文关键字:fault Segmentation 更新时间:2023-10-16
试图跟踪,但没有找到以下代码在vc++中给出"Access violation"的原因,在gcc中给出分段错误..
#include <vector>
#include <iostream>
using namespace std;
typedef struct node
{
std::string data;
vector <struct node*> child;
}NODE, *PNODE;
int main()
{
PNODE head;
head = (PNODE) malloc(sizeof(NODE));
head->data.assign("hi");
printf("data %s", head->data.c_str());
getchar();
}
你究竟为什么认为它应该起作用?您使用malloc
,而不是new
,因此没有调用构造函数,并且您所做的一切都访问未初始化的内存。
使用new
而不是malloc
在堆上创建c++对象。
:
head = (PNODE) malloc(sizeof(NODE));
应该读
head = new NODE;
malloc()
在这里不起作用的原因是它没有调用对象构造函数
我同意前面的答案。
我应该补充说,最好的做法是避免using namespace
(见这里)
在c++中,避免使用类似C的结构声明:
typedef struct node
{
std::string data;
vector child;
}NODE, *PNODE;
应:struct Node
{
std::string data;
std::vector<Node> child;
}
:
Node head;
或:
Node* head = new Node;
如果使用c++,请使用std::cout
而不是printf
也有c++强制转换运算符:dynamic_cast
, static_cast
, const_cast
, reinterpret_cast
(见这里)
相关文章:
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- 为什么我的C++代码中出现'Segmentation Fault: 11'行?
- 给定一个整数数组,需要在Max_Heap上运行操作。得到错误"segmentation fault",有什么想法吗?(C++)
- 循环时无法进入:"Segmentation fault"
- OpenGL "Segmentation fault"错误
- 如何修复访问动态数组中结构中的字符串变量时"segmentation fault (core dumped)"错误
- 如何修复 C++ 中的'Segmentation fault'错误
- 创建一个简单的类及其变量和函数不断返回" segmentation fault (core dumped)"、C++
- 在 Mac OS 上遇到的"Segmentation fault: 11" [C++]
- 在 Linux 上实施英特尔 MKL 的 DFT 时"Segmentation fault"
- 尝试读取包含 ints 并存储在 int vector 中的文件,但我不断收到错误"Segmentation fault (core dumped)"
- 在非空 std::list 上使用 std::list.back<int>() 时"Segmentation Fault"
- 我正在尝试通过说话传递一些字符串,它会读取它们,但我得到了"segmentation fault"
- 为什么当我更改此代码时会给我"segmentation fault"错误?
- 尝试将文本文件加载到动态分配的 2D 数组中时出现'Segmentation fault'错误
- 将double打印到std::cout会导致Segmentation fault(C++)
- 将指针分配给链接列表节点会引发"Segmentation Fault"
- "Segmentation fault"使用 Cmake 在C++代码中运行 python 函数时
- 无法读取 Ubuntu "Segmentation fault (core dumped)"中的.dat或.bin文件
- 如何修复C++中的"Segmentation fault(core dump)"?