问题标签 [static-memory-allocation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++11 - 为什么通过指针返回数组在 C++ 中不起作用?考虑下面的代码
1) add(2,3) print 5,考虑到返回指针的 print() 函数,在这种情况下如何获取值
2) 存储 2 个函数的位置。我猜两者都将存储在堆栈中,为什么 print() 函数没有打印“Hello”
c - 堆栈或堆上数组的内存分配 (C)
考虑以下 C 代码:
在上面的代码中,arrSize是取自用户输入的数组的大小。我想知道以下观察是否正确:
dynArr是一个动态数组,它在运行时在堆上分配到内存中。可以使用realloc函数修改 dynArr 的大小。
arr1在运行时也在内存中分配,但不是动态的(即它们的大小不能修改),它是在Stack上分配的。
c++ - c++中变量的堆栈内存分配
c++ 编译器如何组织函数中初始化的变量来存储它们,以便计算机以最快的方式找到它们?
我知道编译器将它们一个接一个地放在堆栈上,但背后必须有一些逻辑,我在谷歌上搜索了几个小时,但我找不到任何东西。
例如:
由于 c++ 编译器在内存中的存储方式,这应该比下面的内存占用更多的内存。
当然,使用的确切位是相同的,但在下面的示例中它们应该以更有效的顺序存储。在下一个示例中,编译器会将这些变量存储在内存中的什么位置?据我了解,变量总是存储在一个块中,这样(logical number) % (number of bytes the datatype) = 0
c - 为什么在每次调用函数时都会初始化静态变量,但我们每次都必须在 C 中声明它
我读到:静态变量仅初始化一次(与自动变量不同),并且在运行时将绕过静态变量的进一步定义。 从链接。
那么为什么我在下面给出的代码中收到“我没有声明”的错误。我编写的程序使得静态变量“i”仅在 c 等于 0 后第一次初始化,然后 c 增加。我只想知道静态变量是如何工作的,这就是为什么我只声明一次静态变量。我的问题是静态变量是否只在每个函数调用中声明一次,那么为什么我的代码没有运行,如果有必要在每次调用中声明它,那么为什么它不在每个函数调用中初始化。
c - C 中的这个 for 循环中的变量 x 会发生什么?
在下面的这段代码中
这里的变量x
是`auto storage class,对吧?
那么,变量x
会被创建吗,我的意思是内存分配发生在遇到语句时,当它到达循环结束并被创建/内存被再次分配时被销毁x
?
我试图打印x
循环中的地址,它每次都打印相同的地址x
。那么,这是否意味着每次创建和销毁 x 并且它使用相同的房间/内存块?
如果它像那样创建和销毁,它不会影响CPU使用率吗?如果是这样,有什么方法可以预防并保持良好的记忆健康?
c++ - c++ 中的成员函数在哪里分配内存?多久分配一次?
类的成员函数在哪里分配内存?
堆栈框架是它的答案吗?
每当我们调用成员函数时,它会被分配吗?
就像每当我们使用一个对象调用一个成员函数时,它会在堆栈帧中分配,当函数到达它时返回语句,分配的堆栈帧会被释放?
c - 在嵌入式系统中的“公共库”中静态分配的方法
我们有一个用于几个嵌入式系统的通用 C 库,它们都使用静态(即编译时)分配。
所以,这意味着我们通常有一些东西可以归结为这一点(如果我们不想更改公共源文件):
换句话说,为了避免 malloc'ing,实际上浪费了很多空间。
或者我们可以这样做,即为每个项目设置一组新的枚举:
这种另一种情况不会浪费空间,但这意味着每个项目都会更改(比如说)timer.h
文件以定义自己的常量。顺便说一句,计时器示例只是原理的一个示例。
那么有没有一种更聪明的方法来获得像编译时“恰到好处的大小”分配这样的东西,它仍然允许我们拥有一个带有单独测试的通用“冻结”代码库?
c++ - 静态内存分配 - 它是按顺序分配的吗?
我需要知道对于所有编译器是否可以保证&N == &N_neg[MAXN]
以下代码中的这一点。
如果是这样,我就完成了,这就是我所需要的。如果没有,请阅读下面的完整问题。
注意:这仅适用于编程竞赛,因此不必担心可维护性。我更关心保持T
易于理解。
我有以下定义:
但是,在里面T
,我访问B[-n]
, where n > 0
。所以,这就是我想要做的:
根据编译器,这是不允许的。cppreference甚至有一个关于这种特殊情况的例子,说它不起作用,我已经在其他地方搜索了解决方案(还没有找到)。我确实了解模板是如何工作的,并且我知道(以及为什么)每个模板参数的值必须在编译期间知道,并且N
只有在链接期间才知道的地址。
有什么建议么?
这是完整的代码(以防有人根据问题提出任何建议):
c - Is this is an example of static memory allocation or dynamic memory allocation?
I researched a lot of static and dynamic memory allocation but still, there is a confusion that:
Does int a[n]
come under static or dynamic memory allocation?
c - 我有点困惑,自动内存分配是在运行时还是编译时发生
我知道内存是在编译时分配给自动变量的,例如int a;
并存储在堆栈中,但如果是变量数组的输入是从用户那里获取的,例如
内存是在运行时分配的。所以我的问题是,自动分配是否取决于大小写。谢谢