我已经执行了下面的代码,它完美地运行了。由于它涉及指针,我想确认一下。虽然我确定将char*分配给字符串会复制值,即使我删除char*,字符串变量也会保留该值。
#include <stdio.h>
#include <string.h>
#include <string>
#include <iostream>
int main()
{
std::string testStr = "whats up ...";
int strlen = testStr.length();
char* newCharP = new char[strlen+1];
memset(newCharP,'\0',strlen+1);
memcpy(newCharP,testStr.c_str(),strlen);
std::cout << " :11111111 : " << newCharP << "\n";
std::string newStr = newCharP ;
std::cout << " 2222222 : " << newStr << "\n";
delete[] newCharP;
newCharP = NULL;
std::cout << " 3333333 : " << newStr << "\n";
}
我正在更改公司项目中的一些代码,在C++中函数之间传递char*指针。char*指针已被复制到字符串中,但是在函数结束时删除了char*。我找不到任何具体原因。因此,我在将其复制到字符串中后就将char*删除了。这会有什么问题吗...?
附注:我已经在Codereview中问过这个问题,但是得到了将其移至SO的建议。因此,我在那里标记了这个问题并在此发布了问题。