gpt4 book ai didi

c++ - 释放分配给空指针数组的内存

转载 作者:太空狗 更新时间:2023-10-29 19:38:25 25 4
gpt4 key购买 nike

我正在声明一个空指针数组。其中每一个都指向一个任意类型的值。
无效**值;//指向任意类型的每个值的空指针数组

初始化值如下:


values = (void**)calloc(3,sizeof(void*));
//can initialize values as: values = new void* [3];
int ival = 1;
float fval = 2.0;
char* str = "word";
values[0] = (void*)new int(ival);
values[1] = (void*)new float(fval);
values[2] = (void*)str;

//Trying to Clear the memory allocated
free(*values);
//Error: *** glibc detected *** simpleSQL: free(): invalid pointer: 0x080611b4
//Core dumped
delete[] values*;
//warning: deleting 'void*' is undefined
//Similar Error.

现在如何释放/删除分配给值的内存(空指针数组)?

最佳答案

我怀疑问题出在您分配 values 的方式上: values = (void*)calloc(3,sizeof( void )) .那应该是sizeof(void *)而不仅仅是 sizeof(void) .

sizeof(void) 可能为零或其他没有意义的东西,所以你并没有真正分配任何内存开始......分配工作只是运气不好,然后当你尝试释放内存。

编辑:您还通过在 C++ 样式 new 之间交替来自找麻烦/delete用 C 风格 malloc/free .只要您不使用它们就可以同时使用它们 delete有事你malloc 'ed 或 free有事你new 'ed,但如果你这样做,你会在脑海中混淆它们。

关于c++ - 释放分配给空指针数组的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/206257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com