QStringList转存到double数组

1.double数组的两种生成方式

double* doubleArray = new double[4]

double* doubleArray = new double[4] 使用了动态内存分配,也称为在堆上分配内存。在这种情况下,doubleArray 是一个指向 double 类型的指针,它指向了连续的 4 个 double 类型的内存空间。这些内存空间是在运行时动态分配的,在程序执行期间保持有效,直到显式地使用 delete[] 来释放它们。

double a[4];

double a[4] 是使用静态内存分配,在栈上分配内存。在这种情况下,a 是一个包含 4 个 double 元素的数组,它在编译时就分配了固定大小的内存空间。数组 a 的内存在定义时分配,函数返回后会自动释放。

区别和注意事项:

  • 动态分配的内存需要手动释放,使用 delete[] doubleArray 来释放内存,否则会导致内存泄漏。
  • 静态分配的数组在其作用域结束时会自动释放,不需要显式释放内存。
  • 静态分配的数组大小在编译时确定,无法在运行时改变;动态分配的数组大小可以在运行时根据需要进行调整。
  • 动态分配的数组可能导致内存管理方面的复杂性,包括防止内存泄漏和悬挂指针等问题,因此应谨慎使用,并确保适时释放内存。

在选择使用 double* doubleArray = new double[4] 还是 double a[4] 时,需要考虑数组的生命周期和用途。如果需要在函数返回后仍然保持数组的有效性,或者需要动态调整数组大小,可以考虑使用动态分配的方式。如果数组的大小是固定的,并且只在局部范围内使用,静态分配的方式更为简单和安全。

2.

double* doubleArray = new double[4];
    for (int i = 0; i < 4; i++) {
        doubleArray[i] = 0.0;
    }

    // 将QStringList的前4个元素转换为double并填充到doubleArray
    int count = qMin(strList.size(), 4);
    for (int i = 0; i < count; i++) {
        doubleArray[i] = strList[i].toDouble();
    }

1中方法一结果为0.0 方法二正常 不知道原因.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值