问一下,free的实现机制
c++里
int *a;
a = new int[10];
delete a[];
我们告诉编译器要释放的是一个数组,这没问题
可是c里
int *a;
a = (int*)malloc(10*sizeof(int));
free(a);
问题来了,要是按字面意思,这会内存泄漏啊,free(a)由于a是个int*,只释放一个int的空间,另9个int都会丢失才对
当然编译器让它不泄漏是好事,但是就是不知道这内部是怎么做到的,写这样的代码总觉得不踏实
ps: 现在用c,好久不用c++都忘了。。在这个例子里int是内部类型,是不是写delete a;也没事?是不是只有class类型的东西才需要使用delete [];来显式指定要释放的是一个数组?