gpt4 book ai didi

c++ - ARM 架构中的指针处理和 Valgrind 方法

转载 作者:行者123 更新时间:2023-11-30 04:05:20 28 4
gpt4 key购买 nike

我在 ARM 目标上运行以下代码。以下是观察1) 尽管在没有初始化的情况下访问指针,但代码执行没有任何问题/崩溃 (HalloWorldMain *hm1)2) Valgrind 没有提示这个程序有任何内存问题。

==344== Memcheck, a memory error detector
==344== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==344== Using Valgrind-3.9.0 and LibVEX; rerun with -h for copyright info
==344== Command: ./HalloWorld
==344==
Hallo World!
Prinitng at simpleTest
==344==
==344== HEAP SUMMARY:
==344== in use at exit: 0 bytes in 0 blocks
==344== total heap usage: 2 allocs, 2 frees, 8,552 bytes allocated
==344==
==344== All heap blocks were freed -- no leaks are possible
==344==
==344== For counts of detected and suppressed errors, rerun with: -v
==344== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)

#include <iostream>
#include "HalloWorldMain.h"
#include <fstream>

using namespace std;

HalloWorldMain::HalloWorldMain() {
// TODO Auto-generated constructor stub
ofstream file;
file.open("1.txt", ios::out);
file << "Inside the file \n";

}
void HalloWorldMain::simpleTest()
{
cout<<"Prinitng at simpleTest\n";
}

HalloWorldMain::~HalloWorldMain() {
// TODO Auto-generated destructor stub
}

int main()
{
HalloWorldMain hm;
HalloWorldMain *hm1;
cout << "Hallo World!\n";
hm1->simpleTest();
}

谁能帮我理解这种行为。谢谢

最佳答案

当你调用一个对象的成员函数时,对象的地址作为隐式参数传递给函数。在你的例子中,你用来调用函数的指针是未初始化的,所以地址是垃圾。

但这在您的情况下没有问题,因为 simpleTest() 没有以任何方式访问该对象。它也可以是一个静态函数。但是,一旦您尝试访问成员变量,程序就会崩溃。

关于c++ - ARM 架构中的指针处理和 Valgrind 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23338062/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com