首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >条件跳转问题

条件跳转问题
EN

Stack Overflow用户
提问于 2015-07-11 20:24:02
回答 1查看 132关注 0票数 0

我正在使用valgrind测试trie,在第一个符号传递给函数create_trienode之后,出现了“条件跳转或移动取决于未初始化的值”错误。

我有struct:

代码语言:javascript
复制
typedef struct TrieNode{
    struct TrieNode **children;
    bool is_word;
} TrieNode;

func create_trienode:

代码语言:javascript
复制
struct TrieNode *create_trienode(char c, struct TrieNode *parent){
    struct TrieNode *node = malloc(sizeof(struct TrieNode)); 
    node->children = malloc(ALPHABET_SIZE*sizeof(struct TrieNode*)); 
    node->is_word=false;
    return node; 
}

和func create_tree

代码语言:javascript
复制
struct TrieNode *create_tree(FILE *file) 
{
struct TrieNode *root = create_trienode(' ', NULL);
struct TrieNode *ptr = root;
int character;
int converted;
int buffer;

//This handles if file does not end with a newline
character = fgetc(file);
buffer = fgetc(file);

while(character != EOF) 
{
  character = tolower(character);

  if (character == 10) // case newline
  {

  }
  else 
  if(isalpha(character))  
  {

      converted = character - 'a';
      if(ptr->children[converted] == NULL) // CONDITIONAL JUMP HERE
      {
          ptr->children[converted] = create_trienode(character, ptr);
      }

      ptr = ptr->children[converted];  

  }

  if (character == 92) 
  {
      if(ptr->children[ALPHABET_SIZE] == NULL) 
      {
          ptr->children[ALPHABET_SIZE] = create_trienode(character, ptr);
      }
      ptr = ptr->children[ALPHABET_SIZE];
  }

  if(ptr != root && (!(character == 92|| isalpha(character)) || buffer == EOF)) 


  {
      ptr->is_word = true;
      ptr = root;
      word_count++;
  }

  character = buffer;
  buffer = fgetc(file);
}

在行if(ptr->children[converted] == NULL) valgrind说“条件跳转或移动取决于未初始化的值”,我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2015-07-11 21:52:17

ptr->children[converted]NULL进行比较,但不要将其初始化为任何值。

在malloc之后,空格不是空的,所以ptr->children[converted]不能是‘NULLed’,它可以是任何值。

要解决这个问题,可以在malloc之后将ptr->children[converted]初始化为NULL。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31357152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档