#独家
std::list 请问会导致内存访问异常或者内存泄露吗?

2023-05-28 0 1,815
// tcharTest.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <Windows.h>
#include <iostream>
#include <list>
#include <tchar.h>


void SetList(std::list<TCHAR*>& _list)
{
    _list.push_back(_T("ref1"));
    _list.push_back(_T("ref2"));
    _list.push_back(_T("ref3"));
    _list.push_back(_T("ref4"));
    _list.push_back(_T("ref5"));


    for (auto it1 = _list.begin(); it1!= _list.end(); ++it1)
    {
        std::cout<<_T("set list  function: ")<<*it1<<std::endl;
    }

}


std::list<TCHAR*> ReturnList()
{
    std::list<TCHAR*> list;
    list.push_back(_T("return1"));
    list.push_back(_T("return2"));
    list.push_back(_T("return3"));
    list.push_back(_T("return4"));
    list.push_back(_T("return5"));

    for (auto it2 = list.begin(); it2!= list.end(); ++it2)
    {
        std::cout<<_T("return_list  function: ")<<*it2<<std::endl;
    }

    return list;
}



int _tmain(int argc, _TCHAR* argv[])
{
    //引用
    std::list<TCHAR*> ref_list;
    SetList(ref_list);
    printf("\n");
    for (auto it1 = ref_list.begin(); it1!= ref_list.end(); ++it1)
    {
        std::cout<<_T("set list main: ")<<*it1<<std::endl;
    }
    printf("\n");

    //返回值
    std::list<TCHAR*> return_list;
    return_list = ReturnList();
    printf("\n");
    for (auto it2 = return_list.begin(); it2!= return_list.end(); ++it2)
    {
        std::cout<<_T("return list main")<<*it2<<std::endl;
    }


    system("pause");
    return 0;
}

std::list<TCHAR> ReturnList() 出栈后访问list是否可能出现THCAR被释放导致访问异常? 两个函数放的TCHAR* ,用完这个list后需要list.clear()吗?

在给定的代码中,ReturnList 函数返回的是 std::list<TCHAR*> 类型,而不是 std::list<TCHAR> 类型。因此,栈上的 TCHAR 不会被释放,也不会导致访问异常。

在 SetList 函数中,传递的是引用 _list,因此在 main 函数中对 ref_list 进行迭代时,引用的 _list 仍然有效,不需要手动清空。同样地,在 ReturnList 函数中,返回的 std::list<TCHAR*> 类型的副本会在 main 函数中赋值给 return_list,所以在函数结束后,return_list 拥有自己的副本,也不需要手动清空。

总结起来,给定的代码中不需要手动清空 std::list,因为不会出现 TCHAR 被释放导致访问异常的情况。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. JK下载官网所有资源来源于开发团队,加入会员即可下载使用!如有问题请联系右下角在线客服!
2. JK下载官方保障所有软件都通过人工亲测,为每位会员用户提供安全可靠的应用软件、游戏资源下载及程序开发服务。
3. JK开发团队针对会员诉求,历经多年拥有现今开发成果, 每款应用程序上线前都经过人工测试无误后提供安装使用,只为会员提供安全原创的应用。
4. PC/移动端应用下载后如遇安装使用问题请联系右下角在线客服或提交工单,一对一指导解决疑难。

JK软件下载官网 技术分享 std::list 请问会导致内存访问异常或者内存泄露吗? https://www.jkxiazai.com/1745.html

JK软件应用商店是经过官方安全认证,保障正版软件平台

相关资源

官方客服团队

为您解决烦忧 - 24小时在线 专业服务