在分割故障下面的代碼結果時,它的運行,我想不通爲什麼:分段故障在一個結構分配的std :: string
#include <cstdlib>
#include <string>
#include <iostream>
using namespace std;
struct Token
{
int num;
string val;
};
int main()
{
Token* tok = (Token*) malloc (sizeof(Token));
tok -> val = "myval";
std::cout<<tok->val;
}
看到回溯:
0 0x00007ffff7b95d9b in std::string::assign(char const*, unsigned long)() from /usr/lib/x86_64-linux-gnu/libstdc++.so.6;
1 0x0000000000400867 in main()
一個問題:什麼是使用的原因動態分配在這裏?如果你沒有很好的答案,那麼你不應該使用它。 – juanchopanza