【问题标题】:C - Creating Sub Function To realloc Array SizeC - 创建子函数来重新分配数组大小
【发布时间】:2013-11-14 09:43:59
【问题描述】:

我遇到了指针问题。我已经阅读了 30 多篇关于这个主题的帖子,但没有一个符合我的设置。这是我正在尝试做的事情:

void doSomething(myStruct **myList)
{
    resizeMyList(myList,5);

    myList[0] = '42';
    myList[1] = '43'; // ERRORS OUT OF MEMORY
}

void resizeMyList(myStruct **theArray,int size)
{
    myStruct *new_ptr = realloc(*theArray,(size * sizeof myStruct));

    if(new_ptr)
         *theArray = new_ptr;
    else
         printf("died");
}

在我的 resize 函数执行后,myList 无法获取新指针。我做错了什么?

【问题讨论】:

  • 你能补充更多细节吗?你得到 new_ptr=NULL 吗?以及评论 ERRORS OUT OF MEMORY 是怎么回事?
  • sizeof myStruct 不是您的真实代码,无法编译。应该是sizeof *new_ptr

标签: c arrays pointers struct realloc


【解决方案1】:

你会的

myList[0] = ...

但是myList 是一个双指针,所以它应该是

(*myList)[0] = ...

此外,您尝试将多字符文字分配给结构。

【讨论】:

  • 哇,parens??我实际上是在做 *myList,却忘了把它放在我的示例代码中。添加后,它起作用了。令人惊讶的是,最小的事情如何使一切变得不同。谢谢!
  • @MarkLöwe 因为operator precedence rules,数组下标的优先级高于指针解引用。
猜你喜欢
  • 1970-01-01
  • 2012-03-17
  • 1970-01-01
  • 2021-10-07
  • 2021-03-11
  • 1970-01-01
  • 1970-01-01
  • 2018-05-26
  • 2015-05-06
相关资源
最近更新 更多