如何适当地初始化一个指向char数组的指针?

时间:2019-03-28 12:33:00

标签: c++ sorting char

我需要一些有关此排序功能的帮助。此功能的目的是创建一个指向char的指针数组,以使用户可以用一些单词填充它,并按字母顺序将其取回。这是代码的一部分:

public func clearCookies(completion: @escaping (() -> Swift.Void)) {
    // First remove any previous cookies set in the NSHTTP cookie storage.
    HTTPCookieStorage.shared.removeCookies(since: Date.distantPast)
    // Second remove any previous cookies set in the WKHTTP cookie storage.
    let typeCookiesToBeRemoved: Set<String> = [WKWebsiteDataTypeCookies]
    // Only fetch the records in the storage with a cookie type.
    WKWebsiteDataStore.default().fetchDataRecords(ofTypes: typeCookiesToBeRemoved) { records in
        let dispatchGroup = DispatchGroup()
        records.forEach { record in
            dispatchGroup.enter()
            WKWebsiteDataStore.default().removeData(ofTypes: record.dataTypes, for: [record], completionHandler: {
                dispatchGroup.leave()
            })
        }
        dispatchGroup.notify(queue: DispatchQueue.main) {
            print("All cookies removed.")
            completion()
        }
    }
}

当我尝试运行它时,出现此错误,但我不明白为什么。 这是程序的输出:

字符串数:3 插入0元素:abc 从主读取失败                        :输入/输出错误 RUN FAILED(退出值1,总时间:7秒)

1 个答案:

答案 0 :(得分:0)

char *Vector[NumString]定义为char指针数组。 有关此的更多信息: https://www.codeproject.com/Articles/7042/How-to-interpret-complex-C-C-declarations

由于char*元素均未初始化,因此您的程序在尝试cin时进行了非法的内存访问,并被关闭/崩溃。

为避免这种情况,您可以改用std::string来为您分配内存。

编辑: 如果必须使用char数组,则可以执行以下操作: 您可以像这样char预先分配char Vector[numString][noteLength]数组长度。然后使用std::cin >> std::setw(noteLength) >> Vector[i]

您还可以使用先前的char *Vector[NumString]定义并调用Vector[i] = new char[noteLength]动态分配指针。完成操作后,别忘了致电delete Vector[i]

您还必须#include <iomanip>才能使用std::setw