gpt4 book ai didi

C malloc(段错误 : 11)

转载 作者:太空宇宙 更新时间:2023-11-04 05:53:49 26 4
gpt4 key购买 nike

我试图理解 malloc,但我不断收到“段错误:11”的这段代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
int i = 0, j = 0;
char ** ptr = (char **) malloc(sizeof(char*));

for(i = 0; i < 5; i++)
{
for(j = 0; j < 10; j++)
ptr[i][j] = 'a';

printf("%s\n", ptr[i]);
}

return 0;
}

我认为没有分配足够的字节,所以我执行了 malloc(sizeof(char*) * 100,但给了我同样的错误。我在这里不明白什么?

最佳答案

分配二维数组时,还需要分配各个子数组。此外,您需要说出您希望拥有多少个元素。为此,您将所需的计数乘以元素的数量,如下所示:

char ** ptr = (char **) malloc(5*sizeof(char*));
// Size=5 ---------------------^
for(int i = 0; i < 5; i++) {
ptr[i] = malloc(11*sizeof(char));
// sizeof(char) is always 1, so the multiplication above is redundant.
// You need 11 elements for ten characters
for(int j = 0; j < 10; j++) {
ptr[i][j] = 'a';
}
// don't forget to null-terminate the string:
ptr[i][10] = '\0';
printf("%s\n", ptr[i]);
}

关于C malloc(段错误 : 11),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32544855/

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