关于结构体的内存分配与释放的有关问题
关于结构体的内存分配与释放的问题现有一个结构体:C/C++ codetypedef struct _ScPoint{int xint y}ScPoi
关于结构体的内存分配与释放的问题
现有一个结构体:
C/C++ codetypedef struct _ScPoint{ int x; int y;}ScPoint;
函数:
C/C++ codeinline ScPoint scPoint(int x, int y){ ScPoint p; p.x = x; p.y = y; return p;}
=====================================================
那,我每次需要使用一个点的时候,
ScPoint p = scPoint(3, 5);
这样可以么?不需要malloc么?释放呢?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
还有,
我需要一个数组
ScPoint vector[10];
那么vector怎么申请内存呢?又是怎么释放内存呢?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·
(如果是平时的指针的结构体的话,应该是这样的吧?vector = (ScPoint *)malloc(sizeof(ScPoint) * 10);
释放是 直接 free(vector); 还是需要一个个的释放 vector 里面的 ScPoint呢? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~额 当然,也不是指针。。。数组的话,又是怎么申请、释放内存呢?)
[解决办法]首先呢,建议楼主不要把函数的名称和变量名称搞成一样的。看的别扭。
数组,变量什么的直接定义就可以了,其存储在栈区间内;如果你使用指针需要使用malloc进行动态分配内存,存储在堆空间内
[解决办法]第一个问题:C/C++ codetypedef struct _ScPoint{ int x; int y;}ScPoint;inline ScPoint scPoint(int x, int y){ ScPoint p; p.x = x; p.y = y; return p;}int main(){ ScPoint p = scPoint(3,4); printf("%d-%d\n",p.x, p.y);}//3-4, 这样是可以的
[解决办法]
1楼的很正确:数组,变量什么的直接定义就可以了,其存储在栈区间内;如果你使用指针需要使用malloc进行动态分配内存,存储在堆空间内
ScPoint vector[10];在函数结束的时候就空间自动释放,
[解决办法]
[解决办法]
提供拷贝构造函数和赋值函数
[解决办法]