C에서 멀티 비트 트라이를 구현하고 있습니다. 세분화 오류 오류가 발생합니다. 프로그램을 실행할 때. 무슨 일이 일어나고 있는지 모르겠어요?
Multi bit 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;
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다