这两天用C++把pywavelet的小波变换实现转出来,接触到了动态内存的使用。以前一直觉得用new就OK了,也比较方便。到真正用到数值运算的时候才发现new生成的动态内存数组会出现数值不稳定的问题,原因不明,可就是出现了,而且是必然出现的,甚至可能出现段错误。这个问题害得我debug了一天,最后才发现是动态内存的问题。后来改用了stdlib里的malloc和calloc就非常OK了。所以设想如果需要用到动态内存,以后一律用malloc和calloc。
不过到后来发现段错误的出现是因为自己在初始化数组各项为0的时候出错了,晕倒。可惜为什么先前出错了居然都能运行的原因就不明了。
发表评论