[英]char** memory allocation using new operator
我真的感到困惑,因為這會引發錯誤....
char** results = new char*[numRes]; //this is where it breaks
for(int i = 0; i < numRes; i++)
{
results[i] = new char[64];
}
這會導致堆錯誤的破壞。 但肯定應該有用嗎? 我將4個char *分配給一個字符指針列表,這樣我就可以將它們傳遞給函數等。
我環顧四周,但他們似乎都在展示malloc和free ......我在課堂上使用它們,所以我想堅持使用c ++ new和delete。
有人可以借給我一只手嗎?
分配后你在做什么? 您只分配了一個字符指針數組,沒有為每個元素(指針)分配空間。 如果您嘗試在元素中存儲項目,則會遇到問題。
例如,如果您想在分配后在結果[0]中存儲任何內容,則還需要分配給它。 例如:
results[0] = new char[100]; // NEED TO ALLOCATE BEFORE WRITING TO results[0]!
strcpy(results[0], "Test");
如果沒有分配,您不能只復制到結果[0]。 任何結果元素都是如此。
您正在為指針數組分配內存。 之后,您必須為數組中的每個指針分配內存。 我認為你的代碼應該是這樣的:
int numRes = 4;
char** results = new char*[numRes];
for(int i=0; i<numRes; i++)
{
results[i] = new char;
}
如果使用c ++可以使用STL嗎? 你的代碼中特別是std :: string和std :: list或std :: vector類? 與傳統的c字符串不同,傳統的c字符串只是存儲器數組中的字符序列,C ++字符串對象屬於具有許多內置功能的類,以更直觀的方式使用字符串進行操作,並具有C ++容器常用的一些其他有用功能。
#include <string>
#include <list>
std::list<std::string> results; // create a list of strings
// and populate it
results.push_back("blah");
results.push_back("blah1");
results.push_back("blah2");
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.