我需要在运行时将
我该如何做到这一点?
char array[size]
调整为char array[new_size]
的大小。我该如何做到这一点?
如果您使用的是std::vector<char>
而不是数组,则您想要的功能将成为该类型的另一种方法。
malloc
分配了char array[size]
,你可以使用realloc
。以下是一个例子(摘自OpenBSD的手册页):newsize = size + 50;
if ((newp = realloc(p, newsize)) == NULL) {
free(p);
p = NULL;
size = 0;
return (NULL);
}
p = newp;
size = newsize;
std::vector
或类似的东西都可以做到这一点,你只需要不去看它,如果手动编码,最好也将其封装起来。 - dmckee --- ex-moderator kitten您需要分配一个新的数组并将现有数组的内容复制到其中。不能仅仅使现有数组变大。
char* array = (char*)malloc(sizeof(char) * number_of_chars_in_word);
std::vector
。 - GManNickGnew
пјҢеңЁжһҗжһ„еҮҪж•°дёӯdelete
зҡ„char* palocuжҲҗе‘ҳгҖӮдҪҶжҳҜдҪҝз”Ёstd::vector
еҸҜиғҪдјҡжӣҙеҘҪгҖӮ - quamrana类似这样的:
class HangUpGame {
char *palabra;
size_t palabra_size;
public:
HangUpGame(){
palabra = new char[DEFAULT_SIZE];
palabra_size = DEFAULT_SIZE;
}
virtual ~HangUpGame(){
delete [] palabra;
}
void Resize(size_t newSize){
//Allocate new array and copy in data
char *newArray = new char[newSize];
memcpy(newArray, palabra, palabra_size);
//Delete old array
delete [] palabra;
//Swap pointers and new size
palabra = newArray;
palabra_size = newSize;
}
};
针对其他答案的评论,实际上最好的方法是使用STL容器。但是,如果您更喜欢使用数组,那么将当前数组与一个更大的数组进行交换非常容易(在内部,STL容器也会做同样的事情)。
好的,感谢所有的回答,我通过指针为新的字符数组创建了一个新的空间来解决我的问题...谢谢
std::vector
。否则为什么要这样做?你正在重新发明轮子,并且很可能会有 bug。 - GManNickG
char[]
的大小吗? - Mehrdad Afshari