我在修补旧学校阵列的同时偶然发现了这个问题。虽然有趣但是:
edittext1
考虑两种情况:
1。)
a[] = {1,2,3,4,5};
a[][] = {{1,2,3,4}, {4,5,6,7}, {8,9,10,11}, {12,13,14,15}}
2。)
void func(int *a) { //passing a 1D array
a[1] = 100; //modified an element here
delete a; //This would have no effect on the array outside this function.
}
问题是为什么? 在1.)指针应指向一个数组变量存储器因此,删除签名不会清除内存a [0]?
在2.)参数的签名和传递的变量完全匹配,因此删除确实会删除局部变量所拥有的内存吗?
这里有指针吗?
答案 0 :(得分:0)
您在多个级别上调用未定义的行为。在数组上调用delete
而不是delete[]
...并在未分配delete
的对象上调用任何形式的new
。
你的程序可以做任何想做的事。