c++ - 指针在删除它并在 C++ 中再次分配新内存后是否获得相同的内存地址?

标签 c++ pointers visual-c++ memory-management memory-address

Here's the thing I wanted to clarify. I have another function to display links. After calling that display function I got a garbage value on my console. But when I commented "delete temp" statement it worked fine, I got results as expected. Please do help. Thanks.

void MyLinkedList::insertFirst(double data){
    MyLink *temp = new MyLink(data);
    temp->next = first;
    first = temp;
    delete temp;
}

最佳答案

Delete运算符不是删除指针本身,而是删除指针指向的内存。

 MyLink *temp = new MyLink(data); //allocate space for a MyLink dataType
 first=tmp; //temp still points to the allocated space
 delete temp; //deallocate the memory space pointed by temp which is the same memory space pointed by first.

关于c++ - 指针在删除它并在 C++ 中再次分配新内存后是否获得相同的内存地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38311098/

相关文章:

c++ - 对重载函数的模糊调用 - int 和 int&

c++ - Visual C++ 2010 中的 STL 映射实现和线程安全

c - 访问链表中的链表变量

c++ - 为什么在这里使用 static_cast 而不是 reinterpret_cast 很重要?

visual-c++ - Windows 桌面在繁重的网络 I/O 期间变得瘫痪/Windows 内核仅分配了众多 CPU 中的 1 个?

c# - QT 文件与 Visual Studio

c++ - 创建对返回指针的引用

c++ - 两个不同的继承指针地址如何相等?

c - C 中包含结构体数组的函数

c++ - std vector 内存分配 Linux 与 Windows 编译器