所以,我的结构是这样的:
$scope.login = function () {
authService.login($scope.loginData).promise.then(function (response) {
if (document.referrer != "" && document.referrer != window.location.href) {
window.location.href = document.referrer;
}
else {
window.location.href = "/Roles/Index"
}
}
};
我不知道有多少玩家要添加到结构中,我也必须使用动态内存。那么当我将一个播放器添加到我的结构中时,如何分配和重新分配更多空间呢? 我是没有经验的程序员,但我一直在谷歌搜索这个很长一段时间,我也不完全理解结构。 这个网站不接受我的问题,所以让我们在这篇文章中添加更多文字
答案 0 :(得分:0)
我假设您使用C / C ++进行编程。 你的struct player有静态分配的字段,因此,当你在它上面使用malloc时,你需要为一个整数提供20字节字符数组的空间。
我的建议是在变量(或#define符号)中存储您可以接受的初始结构数。然后,使用malloc分配包含这些结构的静态数组。 此外,你必须考虑存储新玩家的策略。最简单的一个可以有一个索引变量来存储最后一个自由位置,并使用它来添加该位置。
以下是一个简短的例子:
#define init_cap 50
struct player {
char name[20];
int time;
};
int main() {
int index;
struct player* players;
players = (struct player*) malloc(init_cap * sizeof(struct player));
for(i = 0; i < init_cap; i++) {
strcpy(players[i].name, "peppe");
players[i].time = i;
}
free(players);
return 0;
}
此时,如果您获得运行时的玩家数量超过初始容量,您还应该考虑重新分配内存。您可以使用:
players = (struct player*) realloc(2 * init_cap * sizeof(struct player));
为了使初始容量加倍。
最后,请务必记住释放所请求的内存。