有一个指针变量:char * p,怎么样判断p指向的是字符串常量,还是new char[]?

C++语言 码拜 4年前 (2015-11-29) 181次浏览
有一个指针变量:char * p,怎么样判断p指向的是字符串常量,还是new char[]?
class MyString{

private:
	char * m_pData;
public:
	MyString(){}
	MyString(char * pStr = NULL)
	{
		m_pData = pStr;//怎么样判断pStr是一个字符串常量?
	}
	~MyString()
	{
		delete m_pData;//假如m_pData指向一个字符串常量,则此处有异常;
	}
};
void main()
{
       char * pStr = new char[20];
       MyString mstr(pStr); //运行正常 
	MyString str("Hello world"); //析构时,报错。
}
解决方案:10分
没有直接的判断方法
一个可能不是很好的办法就是去写这个指针,同时捕捉异常,假如出现异常的是就是常量区的字符串
解决方案:10分
建议LZ在构造函数中,都使用动态分配,然后将参数字符串复制到分配的内存中

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明有一个指针变量:char * p,怎么样判断p指向的是字符串常量,还是new char[]?
喜欢 (0)
[1034331897@qq.com]
分享 (0)