什么时候需要删除由函数返回的指针
created by jsjwql http://blog.csdn.net/jsjwql/
最近在做项目的时候,调用了很多第三方的API, 这些API 有很多返回char *, const char *, 有时需要delete 返回的字符串,有时不能,一删则错,晕,这有什么规则吗?
让我们先看看几个例子
// Return Pointer.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "stdlib.h"
#include "string.h"
//Array
char* test1()
{
char p[] = "test"; //静态存储区上,可以被修改,不是堆上,所以不能delete掉
return p;
}
const char* test2()
{
const char p[] = "test"; //const变量, 全局数据
return p;
}
char* test3()
{
static char p[] = "test"; //静态存储区上
return p;
}
//pointer to const
char* test4()
{
char *p = "test"; //p指向常量字符串,返回字符串指针不能被编辑