18得票2回答
获取堆上对象的大小(以字节为单位)

我知道您可以使用MemoryLayout<T>.size来获取类型T的大小。 例如:MemoryLayout<Int32>.size // 4 然而,对于类实例(对象),MemoryLayout<T>.size返回对象引用的大小(64位机器上为8字节),...

32得票6回答
堆栈中的内存分配

这可能看起来是一个非常基本的问题,但一直在我的脑海中: 当我们分配一个局部变量时,它会进入堆栈。同样,动态分配会导致变量进入堆。现在,我的问题是,这个变量实际上是否位于堆栈或堆上,还是我们只是在堆栈和堆中有一个引用。 例如,假设我声明一个变量int i。现在这个i被分配在堆栈上。因此,当我...

17得票3回答
为什么Objective-C对象必须动态分配?

为什么Objective-C对象必须要动态分配内存?为什么我必须将它定义为指向对象的指针,而不像在C++中可以在栈上创建对象? 谢谢。

8得票5回答
使用new运算符创建一个用户输入大小的数组

我有几个关于数组的问题。 我学过,数组大小必须在声明时是常量,编译器必须知道其值。 但是,在使用GNU GCC编译器(C ++ 11标准过滤器)时,当以动态方式声明该数组(使用new)时,我可以使用变量作为数组大小完美地编译和运行程序。 int num; cout << "How...

7得票3回答
我能否向delete[]提供参数,比如delete[3]?

我看到delete[]可以释放对象数组的内存。然而,我阅读的所有资料中都没有提到像delete[3]这样的参数是错误的还是未定义的。 我的问题如下: C++标准是否规定了我能否/不能使用delete[]的参数作为delete[3]? 如果可以,那么会产生什么影响? 同样,C++是否规定了...

16得票4回答
动态分配数组的大小

指向动态分配数组起始地址的指针不包含该数组大小的信息,需要使用另一个变量来存储以便通过指针后续处理数组。但是当我们释放动态分配的数组时,没有指定大小,而是只需使用“free ptr”或“delete [] ptr”。如何让free或delete知道数组的大小?我们能否使用相同的方案避免在另一个...

27得票8回答
动态分配数组的大小如何确定?

为什么无法获取以此方式分配的缓冲区的长度。AType * pArr = new AType[nVariable]; 当同一数组被释放时delete [] pArr; 运行时需要知道需要释放的内存大小。是否有方法在删除数组之前访问其长度?如果没有,为什么没有提供可以获取长度的API?

11得票1回答
安全关键项目中动态分配的替代方案(C语言)

在安全关键项目中,不建议使用任何动态分配或释放已分配的内存。仅在程序执行的详细化/初始化阶段允许使用。 我知道你们大多数人会争论要在软件中实现全部静态分配,或者在代码中进行一些证明,即动态分配不会影响整个程序等,但是,这个问题有没有其他解决方案?是否有任何方法或任何示例来在程序初始化/详细化...

43得票5回答
退出前我应该释放内存吗?

如果我因为错误而退出程序,是否应该释放所有已分配的内存?something = (char**) malloc (x * sizeof(char*)); for (i = 0; i < x; i++) something[i] = (char*) malloc (y + 1); ...

8得票4回答
警告:函数返回局部变量的地址[默认启用]

#include <string.h> #include<stdio.h> #include<stdlib.h> char *chktype(char *Buffer, int Size) { char *strng = "Content-Type:...