0
void OneDToTwoD(char* rel){

  /*  all the declarations here */

  while(rel[i] != '\0'){
    i++;
  }

...

在上面的代码中,我“有时”都会遇到分段错误。并且 valgrind check 向我抛出“Invalid read of size 1” while(rel[i] != '\0'){

在那一行中,我试图找出rel. 我知道必须有更好的方法来做到这一点。我不能只是做sizeof我可以吗?

4

1 回答 1

2

如果i初始化为零,并rel指向有效的内存块,这将很好地工作。

  1. rel指向无效的内存块或 NULL。
  2. rel 不终止于\0
  3. i不是以 0 开头的。

还有一个答案,您无法从指针中知道内存块的大小。指针不是内存块。如果需要,指针可以指定无效的内存块。因此,如果您想知道内存块的长度,请将length参数添加到函数中。

于 2012-11-27T04:56:55.740 回答