我创建了这个程序,它搜索计算机的目录(给定一个地址,即C:\ Windows)。它将文件名存储到以26长数组(每个字母表中的一个字母的插槽)组织的链接列表中。
当我运行该程序时,它打印出文件夹的文件名,与我输入的字母相关。但是,当我第二次执行时,它会再次打印出最后的打印输出以及新的打印输出。
例如:
输入目录地址:
C:\视窗
C:\ WINDOWS
输入要搜索的字母:
SY
SY
符号
系统
SYSTEM.INI
SYSTEM32
输入要搜索的字母:
一
一个
加载项
程序兼容性
AppPatch文件
AppReadiness
AsCDProc.log
符号
系统
SYSTEM.INI
SYSTEM32
输入要搜索的字母:
我相信我的自由();是在错误的地方。我对C很陌生,所以我还在学习如何正确分配内存。有人会有任何建议来帮助我解决这个问题吗?
这是我的代码:
func *(left: CGAffineTransform, right: CGAffineTransform) -> CGAffineTransform {
return left.concatenating(right)
}
public extension CGAffineTransform {
static func scale(_ scale:CGFloat, aboutPoint point:CGPoint) -> CGAffineTransform {
let Tminus = CGAffineTransform(translationX: -point.x, y: -point.y)
let S = CGAffineTransform(scaleX: scale, y: scale)
let Tplus = CGAffineTransform(translationX: point.x, y: point.y)
return Tminus * S * Tplus
}
}
view.transform = CGAffineTransform.scale(2.0, aboutPoint:point)
答案 0 :(得分:0)
在每个节点上打印调用free()
并将每个数组项设置为NULL
void print(){
int i;
struct node *temp,*printed;
for(i=0 ; i < 26; i++){
temp = arrayOfLinkedLists[i];
while(temp != NULL){
printf("%s\n",temp->fileName);
printed = temp;
temp = temp->next;
free(printed);
}
arrayOfLinkedLists[i] = NULL;
}
}