【发布时间】:2021-12-07 16:18:37
【问题描述】:
char *inputForMidTask(int &n, char **ptr) {
printf("Enter the amount of rows: \n");
scanf("%d", &n);
for (int i = 0; i < n; ++i) {
gets_s(*(ptr + i), 100); //throws exception here
}
return *ptr;
}
void byString() {
int n;
char **ptr = (char**)malloc(255 * 255 * sizeof(char));
*ptr = inputForMidTask(n, m, ptr);
}
你好!我需要逐个字符串填写矩阵字符串,但我不断收到异常错误 - Lab2_Algs.exe 中的 0x78D6FA8D (ucrtbased.dll) 抛出异常:0xC0000005:访问冲突写入位置 0xCDCDCDCD。 附: **ptr 的内存是使用函数 malloc 动态分配的
【问题讨论】:
-
欢迎来到 Stack Overflow。需要完整的代码。请参阅:minimal reproducible example。另外,请使用tour 并阅读How to Ask。
-
我的猜测是调用者没有为字符串数组分配内存,你应该在函数中进行内存分配。
-
我尝试在该函数中进行内存分配,但它并不顺利,我遇到了一个异常,上面写着:“nullptr”。
-
int &n是 C++。 C 没有引用变量。 -
您的内存分配并没有分配您认为分配的内容。您需要分配一个包含 255 个指针的块,然后为每个指针分配一个包含 255 个字符的块。或者大约相当于那个的东西。并且参数列表中的
int &n是 C++,而不是 C。