我正在尝试将指针数组复制到新变量中。我不确定以下直接分配是否是执行复制的正确方法。
SVECTOR **features = (SVECTOR **) malloc(n*sizeof(SVECTOR *));
for(i = 0; i < n; i++){
features[i] = getFeature();
}
SVECTOR **new_features = features; // Doubt: 1
SVECTOR *feature = features[0]; // Doubt: 2
答案 0 :(得分:1)
Attempt 1为您提供别名 - features和new_features引用相同的数组。 尝试2为您提供第一个功能的别名。
你想要什么,对于浅拷贝(如果getFeature()返回的指针指向的值永远不会被修改或取消分配,那就足够了)
SVECTOR **new_features = malloc(n * sizeof *features);
memcpy(new_features, features, n * sizeof *features);
如果浅拷贝不够,那么你需要做一个深层拷贝,需要知道一个特征的结构:
SVECTOR **new_features = malloc(n * sizeof *features);
for(i = 0; i < n; i++){
new_features[i] = cloneFeature(features[i]);
}