gpt4 book ai didi

c - 尝试为动态分配的二维数组赋值时程序崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 08:41:22 27 4
gpt4 key购买 nike

我正在尝试为我的 C 编程类(class)的期末项目编写一些程序,但我遇到了一个我无法解决的问题。我的代码是:

#include <stdio.h>
#include <stdlib.h>
char** allocateLevel(int sizeOfLevel);

int main(void)
{

char** level = allocateLevel(10);
int one, two;

for(one = 0 ; one < 10 ; one++)
{
for(two = 0 ; two < 10 ; two++)
{
level[one][two]='T'; //Crashes right here

}
}
printf("%c", level[4][5]); //tests to see if it prints
}

char** allocateLevel(int sizeOfLevel)
{
char **levelPointer;
levelPointer = (char **)malloc(sizeOfLevel * sizeof(char **));
int count = 0;


for(count = 0 ; count < sizeOfLevel ; count++)
{
levelPointer[count] = (char*) malloc(sizeOfLevel * sizeof(char*));

}
}

程序可以很好地分配内存,但是当我尝试为其中一个元素赋值时它崩溃了。我不知道出了什么问题,我的教授也没有太大帮助。有什么问题吗?

最佳答案

在您的函数 allocateLevel 中,您不会返回任何东西。因此,以 level 结尾的值几乎是未定义的。

  1. 在函数 allocateLevel 的末尾添加 return levelPointer;
  2. 启用您的编译器警告。这会告诉您“函数结束时没有‘return’。”

(编辑)@Oli 所说的 -- 您的 sizeof 都在一定程度上偏离了方向。

关于c - 尝试为动态分配的二维数组赋值时程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23399588/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com