【发布时间】:2018-12-10 20:20:10
【问题描述】:
我有一个函数,它获取一个指向数组的指针作为参数,
例如int** segs。
我需要为数组分配(在函数体中)内存,例如大小为 100。
我的尝试是:
*segs=(int*)(malloc(100));
到目前为止一切顺利。
我在*segs[0] 中输入了一个值,但一切都很好。
但是...当我尝试访问 *segs[1] 时,我从 valgrind 收到“大小为 4 的无效写入”错误,这会导致 seg-fault。
我不知道为什么会这样。
我试图联系*segs[2],但后来我得到了更奇怪的东西-
大小为 8 的未初始化值错误。
【问题讨论】:
-
请尝试创建minimal reproducible example 向我们展示您的尝试。
-
你真的是指 C++ 吗?因为这听起来像 C 代码。用 C++ 编写这样的代码是零理由。
-
我将值放入
*segs[0]- 请注意operator precedence。消除歧义,例如(*segs)[0] = ...或使用本地 var 并在其他所有操作完成后保存到目标 ptr-to-ptr。 -
*segs有什么东西吗?
标签: c++ arrays pointers malloc