C++ C++;指向数组的指针 short*m_pDataBuf//全局变量 void foo(){ m_pDataBuf=新的短路[100]; } 空条(){ short*srcData=&m_pDataBuf[0]; 对于(inti=0;i

C++ C++;指向数组的指针 short*m_pDataBuf//全局变量 void foo(){ m_pDataBuf=新的短路[100]; } 空条(){ short*srcData=&m_pDataBuf[0]; 对于(inti=0;i,c++,arrays,pointers,C++,Arrays,Pointers,不要使用原始指针。不要使用new和delete。使用STL容器 不要使用全局变量 #include <iostream> #include <vector> using std::cin; using std::cout; using std::vector; void bar(vector<short> &data){ data.resize(100); for(short i {0}; i < data.size(); ++

不要使用原始指针。不要使用new和delete。使用STL容器

不要使用全局变量

#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::vector;

void bar(vector<short> &data){
    data.resize(100);
    for(short i {0}; i < data.size(); ++i)
    {
        data[i] = i*5; 
    }
}

int main()
{
    vector<short> data;
    bar(data);
    for(const auto &el : data){
        cout << el << '\n';
    }
    return 0;
}
#包括
#包括
使用std::cin;
使用std::cout;
使用std::vector;
空心条(矢量和数据){
数据。调整大小(100);
for(短i{0};i你的输出到底是什么?在g++上,我得到的是100个数字的序列,从5到495,正如预期的不相关。你有内存泄漏。每个新的deletem_pDataBuf不是数组。它是指针。指针不是数组。m_pDataBuf指向100 wlement数组的第一个元素。这些都不重要,你应该知道无论如何,不要使用C风格的指针或数组。@RashidBagheri在运行时更新什么?只需在末尾添加数组删除以避免内存泄漏。@RashidBagheri我能为您提供什么帮助?您可能应该阅读它们,了解它们是什么,以及如何处理它们。在这种情况下,您必须先添加以下内容从主功能返回
delete[]MyPdBuffuf但要深入理解语句的目的,请查看内存泄漏相关的主题。为什么强制使用STL?也许建议使用QT容器,或升压容器?@ ARSDDEVESTL是C++标准的一部分。它们与编译器一起交付。不需要下载、安装和链接其他libraries@arsdeverQt容器有许可证限制,为什么在可以使用标准库的情况下选择使用第三方库?很好的建议,但这并不能真正回答问题。作为注释可能更好。@Galik OP在注释中询问有关内存泄漏的帮助。避免内存泄漏的最简单解决方案是使用容器。t他的回答显示了一种可能的方法,可以实现相同的功能,而不会出现内存泄漏。