c struct pointer array分配sigsegv

时间:2015-05-13 17:31:23

标签: c arrays pointers struct sigsegv

我是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也会在某个时刻出现(不知道在哪里,可能根本就没有...)

我正在尝试做什么

我正在尝试将此结构复制到数组中并正确管理我的内存。

拜托,不介意要求更多信息!

2 个答案:

答案 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是类型定义的结构,因此我们不需要&。至少我是这么认为的......