How does D distnguish managed pointers from raw pointers?
    H. S. Teoh 
    hsteoh at quickfur.ath.cx
       
    Fri Oct  4 18:43:34 UTC 2019
    
    
  
On Fri, Oct 04, 2019 at 06:34:40PM +0000, Dennis via Digitalmars-d-learn wrote:
> On Friday, 4 October 2019 at 18:30:17 UTC, IGotD- wrote:
> > What if you pass a static array to a function that expects a dynamic
> > array. Will D automatically create a dynamic array from the static
> > array?
> 
> No, you have to append [] to create a slice from the static array.
Actually, it *does* automatically convert the static array to a slice.
Which is actually a bug, because you get problems like this:
	int[] func() {
		int[5] data = [ 1, 2, 3, 4, 5 ];
		return data; // implicit conversion to int[]
	}
	void main() {
		auto data = func();
		// Oops: data now references out-of-scope elements on the stack.
		// Expect garbage values and stack corruption exploits.
	}
See:
	https://issues.dlang.org/show_bug.cgi?id=15932
T
-- 
"How are you doing?" "Doing what?"
    
    
More information about the Digitalmars-d-learn
mailing list