具有唯一指针的右值和移动语义:对象0x7ffee5c7b670的错误:未分配正在释放的指针

问题描述

我正在尝试理解独特的指针如何移动语义。现在,我在下面创建了一个虚拟示例来说明问题所在。我的问题是,为什么这段代码会抛出一个未被释放的指针而未分配错误?:

 generateUserCSV() {
    this.emailService.getAllEmail().subscribe((res) => { this.downloadFile(res,'emails') })
  }


  downloadFile(data,filename = 'data') {
    let csvData = this.ConvertToCSV(data,['email','firstname','lastname']);
    console.log(csvData)
    let blob = new Blob(['\ufeff' + csvData],{ type: 'text/csv;charset=utf-8;' });
    let dwldLink = document.createElement("a");
    let url = URL.createObjectURL(blob);
    let isSafariBrowser = navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1;
    if (isSafariBrowser) {  //if Safari open in new window to save file with random filename.
      dwldLink.setAttribute("target","_blank");
    }
    dwldLink.setAttribute("href",url);
    dwldLink.setAttribute("download",filename + ".csv");
    dwldLink.style.visibility = "hidden";
    document.body.appendChild(dwldLink);
    dwldLink.click();
    document.body.removeChild(dwldLink);
  }

  ConvertToCSV(objArray,headerList) {
    let array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
    let str = '';
    let row = 'Index,';

    for (let index in headerList) {
      row += headerList[index] + ',';
    }
    row = row.slice(0,-1);
    str += row + '\r\n';
    for (let i = 0; i < array.length; i++) {
      let line = (i + 1) + '';
      for (let index in headerList) {
        let head = headerList[index];

        line += ',' + array[i][head];
      }
      str += line + '\r\n';
    }
    return str;
  }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)