C++中的删除运算符

时间:2020-02-23 14:29:56  来源:igfitidea点击:

在本文中,我们将了解C++中delete运算符的必要性和用法。

C++ delete()函数入门

C++语言是一种面向对象的语言,具有在运行时创建对象和操作数据变量的功能。
也就是说,它们可以动态轻松地创建和删除对象。

C++中的delete运算符用于删除数组,对象,指针等。
new运算符将动态内存分配给对象或者数据变量。
为了删除分配的内存,我们使用delete运算符。

语法:

delete object/array/pointer;

delete运算符从堆结构中删除并因此分配了分配的内存。

现在我们已经了解了删除运算符的工作原理和需求,现在让我们了解删除运算符在实际编程场景中的应用。

变体1:使用删除运算符删除空指针

delete运算符可用于有效地释放void指针变量占用的存储空间。

例:

#include <bits/stdc++.h> 
using namespace std; 

int main() 
{ 
	void* str;   
	cout<<"Deleting void pointer.."<<endl;
	delete str;  
	return 0; 
} 

输出:

Deleting void pointer..

变体2:通过delete()函数删除动态分配的内存

可以使用delete运算符删除通过使用malloc()函数对指针变量动态分配的内存。

例:

#include <bits/stdc++.h> 
using namespace std; 

int main() 
{ 

	char* str = (char*)malloc(sizeof(char));
  
	cout<<"Deleting pointer memory allocated dynamically.."<<endl;
	delete str; 
 
	return 0; 
} 

输出:

Deleting pointer memory allocated dynamically..

变体3:使用delete()函数删除指针

在指针的删除操作期间,指向对象或者变量的指针不会被删除。
因此,删除操作符将删除指针指向内存中的内存空间。

示例1:使用delete运算符删除NULL指针

#include <bits/stdc++.h> 
using namespace std; 

int main() 
{ 

	int* str = NULL; 

	cout<<"Deleting a NULL pointer.."<<endl;
	delete str; 
 
	return 0; 
} 

在上面的示例中,我们销毁了NULL指针变量占用的内存。

输出:

Deleting a NULL pointer..

示例2:删除指向特定值的指针变量点

#include <bits/stdc++.h> 
using namespace std; 

int main() 
{ 

	int* str = new int(100); 
      cout<<"Value before deletion of pointer:"<<*str<<endl;
	cout<<"Deleting pointer.."<<endl;
	delete str; 
 
	return 0; 
} 

在上面的代码片段中,我们使用了delete运算符来释放由保存数据值的指针变量占用的内存空间。
在此,从指针变量占用的空间中清除数据值。

输出:

Value before deletion of pointer:100
Deleting pointer..

变体4:通过delete()函数删除数组对象

可以使用delele []运算符有效地删除C++中的数组对象。

例:

#include <bits/stdc++.h> 
using namespace std; 

int main() 
{ 

	int* str = new int[100]; 
  
	cout<<"Deleting array.."<<endl;
	delete[] str; 
 
	return 0; 
} 

输出:

Deleting array..

总结

  • 删除运算符将分配数据变量,数组或者指针占用的内存空间。

  • 而且,它不会破坏指针,而是会删除指针使用的内存空间。

  • delete []运算符删除数组对象占用的空间。