在 C++ 文件主体中为引用变量分配内存和设置值的问题(不在函数中)
Posted
技术标签:
【中文标题】在 C++ 文件主体中为引用变量分配内存和设置值的问题(不在函数中)【英文标题】:Problem in allocating memory and set value to a refrence variable in c++ file body (Not in function) 【发布时间】:2021-07-31 02:01:12 【问题描述】:我是 C 和 C++ 的新手。我想分配内存并为我的 c++ 文件主体中的指针设置一个值,这样它只会执行一次。 这是我的代码: 我的文件.h:
struct SelectedRows_t
uint32_t rowsLen;
SelectData_t* rows[];
;
extern SelectedRows_t* selectedRows;
我的文件.cpp
SelectedRows_t* selectedRows = (SelectedRows_t*)malloc(sizeof(selectedRows->rowsLen));
// some functions which use selectedRows variable
但我找不到初始化变量的方法。我需要在程序开始时将 rowsLen
设置为 0。
我没有 init
或 main
函数,因为我正在尝试编写一个可以与其他 c++ 代码一起在任何地方使用的库。
我只需要在程序开始时将这个 0 分配给这个变量一次。
我必须自己为这个变量分配内存,否则像 selectedRows->rowsLen
这样的代码会使我的程序崩溃。
我不能在我的函数中使用realloc
这个变量,因为这个结构中的rows
变量需要在任何内存重新分配之前是空闲的。
我不知道这是否重要,但我正在编写这个程序以在 esp32 板上运行。
提前致谢。
【问题讨论】:
您不能以这种方式在 c 或 c++ 中的任何函数之外进行函数调用。 C++ 构造函数可以在main()
之前执行。您可能有兴趣了解单例模式。
看The Definitive C++ Book Guide and List的一些书,都应该介绍构造函数的基本概念。
malloc
现在可以使用了。我为我的变量分配了内存,但它的值不是 0。所以问题不在于函数调用。是设置值。
@KamilCuk 我不在课堂上。我不知道如何在类之外使用构造函数。这样做是否有效?我只有一个没有类的cpp文件。
I don't know how to
然后购买一本书并学习。 I just have a cpp file no class
然后在“cpp 文件”中实现“类”并调用它的构造函数并初始化其中的数据。
【参考方案1】:
我通过使用一个函数在其中完成我的所有工作并返回指向最终SelectedRows_t
的指针来解决了这个问题:
SelectedRows_t* createSelectedRows()
SelectedRows_t* selectedRowsTemp = (SelectedRows_t*)malloc(sizeof(selectedRows->rowsLen));
selectedRowsTemp->rowsLen=0;
return selectedRowsTemp;
SelectedRows_t* selectedRows = createSelectedRows();
【讨论】:
以上是关于在 C++ 文件主体中为引用变量分配内存和设置值的问题(不在函数中)的主要内容,如果未能解决你的问题,请参考以下文章