digitalmars.D.learn - will .length=0 clear memory
- Big Bill (2/2) Nov 05 2008 i just wonder here,
- Bill Baxter (9/11) Nov 05 2008 No it does not, and this is how you can implement a "reserve_capacity"
- Jarrett Billingsley (7/9) Nov 05 2008 free(x) doesn't clear the contents of x. In fact it's completely
- Bill Baxter (7/17) Nov 05 2008 And if you want to let the GC handle it, then
i just wonder here, free(x); will free contents of x, but will x.length=0 free memory too?
Nov 05 2008
On Thu, Nov 6, 2008 at 2:02 PM, Big Bill <bigdorkyb tengu.com> wrote:i just wonder here, free(x); will free contents of x, but will x.length=0 free memory too?No it does not, and this is how you can implement a "reserve_capacity" kind of function for D arrays. void reserve_capacity(T)(ref T[] a, size_t N) { size_t orig_length = a.length; if (orig_length >= N) return; a.length = N; a.length = orig_length; }
Nov 05 2008
On Thu, Nov 6, 2008 at 12:02 AM, Big Bill <bigdorkyb tengu.com> wrote:i just wonder here, free(x); will free contents of x, but will x.length=0 free memory too?free(x) doesn't clear the contents of x. In fact it's completely illegal and I'm surprised your compiler allows it. Not only can arrays not be implicitly cast to pointers, but free() is a C stdlib function, and using free() to free memory allocated by the D GC is a terrible idea. Did you mean "delete x;"?
Nov 05 2008
On Thu, Nov 6, 2008 at 2:46 PM, Jarrett Billingsley <jarrett.billingsley gmail.com> wrote:On Thu, Nov 6, 2008 at 12:02 AM, Big Bill <bigdorkyb tengu.com> wrote:And if you want to let the GC handle it, then x = null; For some reason I completely missed that free(x) in the original mail. Yeh, free() on a D array is not right. --bbi just wonder here, free(x); will free contents of x, but will x.length=0 free memory too?free(x) doesn't clear the contents of x. In fact it's completely illegal and I'm surprised your compiler allows it. Not only can arrays not be implicitly cast to pointers, but free() is a C stdlib function, and using free() to free memory allocated by the D GC is a terrible idea. Did you mean "delete x;"?
Nov 05 2008