在这里提问一个C的问题,可以吧?
我定义了一个全局变量double *gk,然后在函数void GK()中用malloc()动态分配了空间,那么我是在void GK()中执行free(gk)的命令,还是在void main()函数中执行free(gk)命令呢?
在这里提问一个C的问题,可以吧?
我定义了一个全局变量double *gk,然后在函数void GK()中用malloc()动态分配了空间,那么我是在void GK()中执行free(gk)的命令,还是在void main()函数中执行free(gk)命令呢?
在那里释放都可以,只要你指针使用对了。关于何时释放指针,我有两个建议:
一、尽早释放,如果你分配的指针后面没有机会再使用,应该立刻释放,以免占用空间。
二、尽晚释放,分配存储器也有消耗,尤其是物理存储器,因此能重用就重用。
希望我拙劣的表达没有迷惑你。
理解,O(∩_∩)O谢谢!
善哉,2#风大好经典的回答!
还有一个问题,像我定义double a[100],最大也就a[500],因为是把矩阵的按列分块了,再大估算出的值就不准确了,那么我是直接定义a[500]好呢,还是动态定义malloc(sizeof(double)*500)呢?因为我要定义好多,还有b[500],c[500]…,我是追求速度的,按理说a[500]应该会快一些,但我怕这样会使栈溢出,我感觉栈能分配的比较小,希望给个建议!
还是建议使用malloc,为了速度的话,可以一次malloc多次使用,如x = malloc(50000), x1 = x+500; x2 = x+1000, …;
好的,我回去试试,以前没有这么malloc过,O(∩_∩)O谢谢!