C#中的一个指针指向的地址内存释放问题

2024-12-03 14:28:56
推荐回答(3个)
回答1:

需不需要在类myClass的析构函数里添加"delete ptr;"来释放ptr指向的内存
==============================================
这个要看程序到底是什么意图.需要在myClass对象销毁以后就停止对ptr指向内存的读写那可以加delete p;(最好还好在前面加if(!p) )但这不是好的做法.因为p指向的内存不是myClass类分配的.myClass析构函数用到delete p;时不能保证p的有效性.C++的遵循的规则是谁用谁分配,谁分配谁销毁.

delete p;语句的意思是将指针p所指对象的内存交还给系统.这片内存必须是动态内存(堆)上分配的.
但是p本身还是指向这片内存的.对p解引用仍然可以访问这片内存.所以在delete p;以后最好再加上一句
p = NULL;

回答2:

C# 中没有指针,至少看起来没有

内存的释放不是编程人员考虑的

由 .NET 的垃圾回收机制自己处理

要说 lz 问题的答案,那就是不一定释放

回答3:

会的 有自动垃圾回收机制的