【问题标题】:Deleting and re-allocating global pointer - segfault删除和重新分配全局指针 - segfault
【发布时间】:2013-04-11 13:54:21
【问题描述】:

我在 test.h 文件中有: double *condmatrix - 全局变量 然后在我做的主程序中:

cycle_start {
    proc1() {
    condmatrix = new double[maxdim];
    ....simple work with the array itself
    }
    proc2() {
    delete [] condmatrix;
    }
}//cycle finish

这给了我一个段错误。我尝试用 [] 语法删除,没有和其他方式,它仍然给出一个段错误。 Maxdim 因周期而异。

【问题讨论】:

  • 看起来不错。你能给我们一个最小的完整例子吗?
  • 也许你试图删除它两次
  • maxdim 的值是多少?见 [链接] (stackoverflow.com/questions/1087042/…)
  • 不,maxdim 不等于零。在循环中,我所做的就是用随机数填充它,然后对每个元素进行归一化(使总和等于 1)
  • 您可能在某处损坏了内存。检查你是否越界。

标签: c++ segmentation-fault global-variables


【解决方案1】:

好吧,我发现我分配了两次指针,即:

condmatrix = new double [maxdim];
condmatrix = new double [maxdim];
delete [] condmatrix;

我知道这不应该导致问题,但显然确实如此,因为在重写代码以分配一次后,它可以完美运行。也许有一些内存损坏,我偶尔会修复。

【讨论】:

    猜你喜欢
    • 2011-12-17
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 2016-10-03
    相关资源
    最近更新 更多