我对C中的指针有疑问。每个指针在内存(地址)中有4个字节。当我调用malloc()时,它只分配内存并将其地址放到指针中,free()也只释放指针所指向的内存。但是如何在内存中删除不再需要的指针(4个字节)?是不是有内存泄漏?
答案 0 :(得分:12)
指针本身是一个常规变量,这意味着当它超出范围时,将自动释放为它分配的4个字节,就像你在同一个范围内声明的任何其他变量一样。
答案 1 :(得分:7)
指针变量本身通常具有自动存储持续时间,即它在堆栈上,因此一旦变量超出范围,它将占用的内存将被回收并重用。
答案 2 :(得分:3)
通常,指针将保存在堆栈变量中。或者通过堆分配指向堆栈变量的指针进行追溯。堆栈是静态分配的,并在进程终止时释放。因此没有任何泄露。
答案 3 :(得分:2)
指针只是一个普通变量,并且具有与普通变量相同的生命周期。我是一个本地的非静态变量,它的生命周期在它超出范围时结束。如果它是具有静态存储持续时间的变量,则其生命周期在程序结束时结束。如果它位于动态分配的内存中,它的生命周期在释放该内存时结束,对于未来的C1x标准,如果它是一个线程局部变量,它的生命周期在线程结束时结束。
答案 4 :(得分:-1)
在一个坚果壳中..你不能通过任何代码或命令释放指针位置或内存..因为你可能想要制作一个完美的代码程序..具有急性记忆消耗......我得到它。但你不能...... 感谢..