c语言中具有指针数组的结构体
Structure having an array of pointers in c
我正在c中实现多位trie,我正在获得分段错误。当我运行程序时。我不知道哪里出了问题?
多比特树的节点如下:
struct MtNode{
/* nodes is an array 8 elements. Each element is a pointer to its child node.*/
MtNode* nodes[8]; // 2^stride = 2^3 = 8
int nexthop;
};
每个节点按如下方式初始化:
typedef MtNode node;
node *init_mtnode(){
node *ret = (node*) malloc(sizeof(node));
int size = (int)pow(2,STRIDE);
for (int i=0; i<size ; ++i)
{
ret->nodes[i] = NULL;
}
ret->nexthop = -1;
return ret;
}
init_mtnode方法有什么问题吗?
可能有多种原因:
-
您不检查
malloc()
的NULL
,不像new
会抛出异常,malloc()
将返回NULL
如果发生错误。 -
你计算
size
的值,然后循环size
次,但是你的数组只能保存8
指针
试试这个
typedef MtNode node;
node *init_mtnode()
{
node *ret;
int size;
ret = static_cast<node *>(malloc(sizeof(node)));
if (ret == NULL) /* check for NULL */
return NULL;
size = 2 << STRIDE;
if (size >= 8)
size = 7; /* maximum possible value */
for (int i = 0 ; i < size ; ++i)
ret->nodes[i] = NULL;
ret->nexthop = -1;
return ret;
}
相关文章:
- 从函数中全局删除并重新实例化数组结构,而无需在编译时知道数组的大小
- 如何使用函数的输出初始化 const 数组结构字段?
- 传递数组结构、ofstream 和 interger 以运行
- 从文本文件中读取并输入到数组结构中,然后显示读取的数据C++
- 将文本文件读取到数组结构中
- C/C++中数组结构和数组结构的通用接口
- C++ MDC final-在字符类型的数组结构中按字母顺序对记录中的名称进行排序
- C++ 使用数组结构创建平衡的二叉搜索树
- C++:释放动态数组(结构成员)和指向此结构的指针的方法
- 使用 vector 在 c++ 中声明 3D 数组结构
- 数组结构无法正确打印
- 如何在C++中访问数组结构内部的数组结构
- CIN进入数组结构似乎什么也没输入
- ifstream将数组结构到txt文件中,然后尽可能将其提取为数组
- wlanapi-将WlanFreeMemory释放其WLAN_INTERFACE_INFO数组结构
- 显示数组结构 c++
- C++ 使用函数访问数组结构的方法是什么?
- 将庞大的数组结构复制到 GPU
- 如何封送包含字符矩阵的数组结构
- c++动态数组结构体分割错误