【发布时间】:2021-01-26 22:26:54
【问题描述】:
gals 和介于两者之间的一切,首先,我想对新手/重复问题表示抱歉。
TL;DR 我想为二维字符数组分配内存,但是我只能在程序调用 alloc() 时这样做。任何帮助表示赞赏。
既然你们都喜欢代码,那么我就拥有了:
#include <iostream>
using namespace std;
#define LOG(x) cout<<endl<<x<<endl
void alloc(char ***add){
cout<<"Size: ";int s;cin>>s;
*add = new char *[s];
for (int i = 0; i < s; i++) {
*(add)[i] = new char[s];
cout<<add[i][i]<<" ; ";
}
}
int main() {
char **c;
alloc(&c);
for (int i =0;i<2;i++) {
for (int j = 0; j < 2; j++) {
cout<<c[i][j];
}
cout<<endl;
}
cin.get();
}
现在,每当我运行此代码时,都会收到以下错误:Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)。
另外,在调试器中,当函数被调用并输入数组的大小时,我得到 use of undeclared identifier 'c' 错误。
谢谢你,我再次为新手或重复问题道歉,但我确实尝试了我从 Text 得到的答案,唉,无济于事。
【问题讨论】:
-
我得到了使用未声明的标识符“c”错误这将阻止您获取可执行文件,因此您无法调试任何内容。跨度>
-
请输入@drescherjm,但正如我所说,我是个菜鸟。为什么它起作用并且我能够单击调试图标目前超出了我的范围。
-
无论你使用什么资源来学习 c++,你真的应该选择别的东西。显示的代码与您在 c++ 中所做的相差甚远。
alloc的实现方式会阻止您正确释放分配的内存并进行边界测试。 -
@t.niese 我想你不能推荐别的东西吗?我主要从互联网和 stackoverflow 中学到了我所知道的。
-
StackOverflow 上有 The Definitive C++ Book Guide and List。 StackOverflow 是一个针对特定问题的问答平台,但不是学习语言的好起点。您应该首先学习一门语言的基础知识和概念,而这是通过使用一本好书来完成的。
标签: c++ arrays function c++11 dynamic-memory-allocation