[问题] 关于指标的问题

楼主: LeeGarDer (Legendre)   2014-05-23 10:58:28
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC
问题(Question):
最近上课遇到了点问题,是关于指标的
我们课堂上使用指标来模拟矩阵、向量
使用方式大概是这样:
//向量
double *vec=new double [N];
//矩阵
double **mat;
mat=new double *[N];
for (int i=0;i<N;i++) mat[i]=new double [N];
而矩阵相加老师给的code长这样
double **mat_add_mat(int i, double **a, double **b)
{
int k, k1;
double **temp;
temp = new double *[i];
for(k=0;k<i;k++) { temp[k] = new double [i]; }
for(k=0;k<i;k++)
{
for(k1=0;k1<i;k1++) { temp[k][k1] = a[k][k1] + b[k][k1]; }
}
return temp;
}
在函式中 new 一个双重指标,并回传之
使用方式大概如下
double **A
double **B
double **C
.....(分别给值)
C=mat_add_mat(N,A,B)
我对这行的理解是把C这个指标所指向的位址改变成 mat_add_mat 中temp的位址
这里我有个小疑问,那就是C这个指标原先所指向的内存是会自己free掉,还是就这样
晾在一旁了?
如果不会自动归还,那做出for i in range(100) C++A 这种操作
mat_add_mat这个函式不就会一直 new 内存出来而不会归还了吗?
如果没办法自动归还内存,那有什么方法可以改善这个情况呢?
作者: diabloevagto (wi)   2014-05-23 11:03:00
c 不会自动归还,你要自己清掉你一直执行 mat_add_mat 确实会一直new新的出来这就是 c 需要自己管理内存的问题了你自己保证使用 mat_add_mat 之前 c 是没东西的就好会自动回收的机制叫做 garbage collectionc 里面没有这种机制
作者: xpride (陈ㄚ智)   2014-05-23 11:11:00
C++11有了
作者: Raymond0710 (雷门)   2014-05-23 18:37:00
写一个release函式
作者: loveme00835 (发箍)   2014-05-23 20:17:00
C++没有GC。smart pointers是RAII的应用

Links booklink

Contact Us: admin [ a t ] ucptt.com