很抱歉有任何错误。我找不到任何表达式来搜索此问题。
我有一个包含这样的结构的c头文件:
struct foo {
int k;
int l;
char name[];
};
还有一个指针,它保存分配给其他地方的内存的地址。
#include <iostream>
using namespace std;
char* mem_ptr; // initialized somewhere else
int some_offset = 128; // arbitrary value
int main () {
char *name = "some string";
int k = 23;
int l = 24;
foo* p;
// p points somewhere in allocated area
// say it is:
p = (foo*) (mem_ptr + some_offset);
p->k = k; // OK
p->l = l; // OK
// tried three of them
// none of them worked
p->name = name; // COMPILE ERROR
for (int i = 0; i < 12; ++i)p->name[i]=name[i]; // CORE DUMPED
p->name = new char(12); // COMPILE ERROR
}
当我尝试设置成员时,整数(实际上是除flexible-array-member以外的每个成员)都被写入,没有任何问题。但是我找不到任何设置char数组的方法。
ps:已保证分配的区域足够,并且我不能更改struct。我必须按原样处理。
如何正确处理?
答案 0 :(得分:1)
我发现了问题。 谢谢您的帮助!
我误认为是循环。我在for循环的char数组的边界上犯了错误,因为它超出了名称,而不是p-> name,所以引发了核心转储。更正后,效果很好!