如果我像这样分配一个 void 指针,那么我在尝试释放指针时会遇到访问冲突。
int Foo(void* ptr)
{
*((void**)ptr) = malloc(25);
((char*)ptr)[0] = 'A';
free(ptr); //crashes access violation
}
如果我将 void 指针传递给函数并尝试将其释放到函数之外,也会发生同样的情况
int main()
{
void* ptr;
Foo(&ptr);
printf("%s \n", (char*)&ptr); //works
free(ptr); //crashes access violation
retun 0;
}
任何线索如何释放这个指针?