我是c的新手,我遇到以下问题:
执行此部分代码后
use AppBundle\DBAL\Types\RoleType;
...
public function isAdmin()
{
$this->hasRole(RoleType::ROLE_ADMIN);
}
此处发生错误
TypeDefStruct tdss[10];
for(...) {
TypeDefStruct *tds = (TypeDefStruct*)malloc(sizeof(TypeDefStruct));
strcpy(&tds->data, charPointerArray[index]) // works (not original code)
memcpy((void*) &tdss[index], (void*) &tds, sizeof(TypeDefStruct)); // new
free(tds); // new
}
TypeDefStruct:
TypeDefStruct *tds = &tdss[0]; // worked before
printf("\twith input: \"%s\"\n", tds->data); // worked before
错误sigsagv也会在某个时刻出现(不知道在哪里,可能根本就没有...)
我正在尝试做什么
我正在尝试将此结构复制到数组中并正确管理我的内存。
拜托,不介意要求更多信息!
答案 0 :(得分:2)
strcpy(&tds->data, charPointerArray[index]) // works (not original code)
data
是未初始化的对象,您需要使用malloc
分配一个数组。
另外&tds->data
参数错误,您需要使用tds->data
。
答案 1 :(得分:0)
在我的情况下,这并没有解决我的所有错误。也不是sigsegv。
但是
中存在语法错误 memcpy((void*) &tdss[index], (void*) &tds, sizeof(TypeDefStruct));
!
由于tds
是类型定义的结构,因此我们不需要&
。至少我是这么认为的......