我已经执行了下面的代码,它工作得很好。由于它是关于指针的,我只是想确定一下。虽然我确信将 char* 分配给 string 会生成一个副本,即使我删除了 char*,string var 也会保留该值。
#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";
}
我只是在我的公司项目中更改了一些代码,并且 char* 在 C++ 中的函数之间传递。char* 指针已复制到字符串,但 char* 在函数末尾被删除。我找不到任何具体的原因。所以我只是删除 char*,只要它被复制到一个字符串中。这会有什么问题吗...?
PS:我已经在 Codereview 中问过这个问题,但我得到了将其移至 SO 的建议。因此,我已将其标记为关闭并在此处发布问题。