在某些时刻传递堆分配的数组时,我们调用:
delete [] ptrName
编译器如何记住需要取消分配多少内存?
上下文:
我们有几个程序在堆上抛出指向字节数组的指针,出于各种原因在int32,int8和其他适当的情况下进行转换。当内存需要通过删除调用取消分配时,究竟是什么才能确保释放正确的数量?
由于
答案 0 :(得分:1)
编译器分配具有已分配内存信息的x
字节开销,它知道在调用delete []
时删除多少。
§5.3.4NEW
这里,x和y是表示数组的非负未指定值 分配开销; new-expression的结果将被抵消 从运算符new []返回的值中得到这个数量。这个 开销可以应用于所有数组新表达式,包括那些 引用库函数operator new [](std :: size_t,void *) 和其他安置分配
答案 1 :(得分:0)
没有任何标准可言。编译器的开发人员通过写入将由new分配的某些内存量来做出决策,在哪里存储需要释放多少内存。