所以我有這個結構
struct Data {
int id;
string message;
};
我正在嘗試創建一個結構指標陣列并使用此值填充它
Data *stack[10];
for(int i=0; i<10; i ){
stack[i] = (struct Data*) malloc(sizeof(struct Data));
stack[i]->id = i;
stack[i]->message = "message" i;
}
但是,我不斷收到錯誤(除錯時出現分段錯誤)stack[i]->message = "message" i;
任何人都可以幫助了解導致錯誤的原因以及如何解決嗎?
uj5u.com熱心網友回復:
下面是作業示例。您可以使用智能指標進行自動記憶體管理,即當參考計數為零時將自動呼叫解構式。
#include <iostream>
#include <memory>
using namespace std;
struct Data {
int id;
string message;
Data()
{
std::cout<<"default consructor"<<std::endl;
}
~Data()
{
std::cout<<"destructor "<<std::endl;
}
};
int main()
{
std::cout << "Hello World" << std::endl;
std::shared_ptr<Data> stack[10];
for(int i=0; i<10; i ){
stack[i] = std::make_shared<Data>();
stack[i]->id = i;
stack[i]->message = "message" std::to_string(i);//make sure to convert the integer to std::string
}
//check the value of id for first element in stack
std::cout<<stack[1]->id<<std::endl;
return 0;
}
您也可以使用new代替malloc但隨后您必須delete顯式呼叫。請注意std::to_string()將整數轉換i為字串的使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/315018.html
上一篇:我想呼叫這個3d陣列
下一篇:struct元素初始化的區別
