以下のコードを実行しましたが、完全に機能します。ポインタに関するものなので、確認したいだけです。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";
}
会社のプロジェクトでいくつかのコードを変更しているだけで、C++ の関数間で char* が渡されます。char* ポインターは文字列にコピーされましたが、char* は関数の最後で削除されます。これには具体的な理由が見つかりませんでした。したがって、文字列にコピーされるとすぐに char* を削除しています。これは問題になりますか..?