相关疑难解决方法(0)

"struct hack"在技术上是不确定的行为吗?

我要问的是众所周知的"结构的最后一个成员有可变长度"的技巧.它是这样的:

struct T {
    int len;
    char s[1];
};

struct T *p = malloc(sizeof(struct T) + 100);
p->len = 100;
strcpy(p->s, "hello world");
Run Code Online (Sandbox Code Playgroud)

由于结构在内存中的布局方式,我们可以将结构覆盖在一个大于必要的块上,并将最后一个成员视为大于1 char指定的大小.

所以问题是:这种技术在技术上是不确定的行为吗?.我希望它是,但很好奇标准对此有何看法.

PS:我知道C99的方法,我希望答案专门针对上面列出的技巧版本.

c c89 undefined-behavior

109
推荐指数
7
解决办法
9414
查看次数

c ++声明一个不知道大小的数组数组

我必须声明一个数组或多维数组的数组,而不知道大小.我希望在这种情况下使用简单的数组做类似的事情:

int *array;
cin >> size;
array = new int[size];
Run Code Online (Sandbox Code Playgroud)

也许我可以做一个循环来初始化像这样的指针指针:

int **array;
cin >> rows >> col;
array = new *int[rows]
for (int i = 0; i < rows; ++i)
    array[i] = new int[col];
Run Code Online (Sandbox Code Playgroud)

但如果可以提供更好的解决方案,我更愿意不这样做.

c++

6
推荐指数
1
解决办法
1万
查看次数

你可以将数量保留在一个未知的数组中吗?

string示例[];

是一个数值不确定的数组?如果可以,我可以将.txt文件中的值导入其中,即使我不知道有多少项?

c++

-3
推荐指数
1
解决办法
51
查看次数

标签 统计

c++ ×2

c ×1

c89 ×1

undefined-behavior ×1