- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个 C 项目,事实证明,在特定时刻,我调用了 calloc() 函数,它分配了一个已在使用中的内存块。这怎么可能?我检查了我的内存分配使用情况,每次调用 malloc/calloc 时,我都会调用 free(pointer_to_the_allocated_memory) 。因此,这不是内存泄漏问题,也不是两次释放的指针问题。我没有粘贴我的代码,因为它是为了大学工作而我还没有发送。欢迎任何类型的帮助/建议。提前致谢。
最佳答案
两个指针有可能指向同一个地方。
p1 = malloc(sizeof(int));
/* ... */
p2 = p1;
/* ... */
free(p1);
/* ... */
p3 = malloc(sizeof(int)); /* may allocate the block already used by p2 */
请注意,它通常并不那么明显。它可能通过指针算术(即 p2++
)发生,或者不同的部分可以在不同的函数中完成。
另一种可能性是您在没有注意到的情况下释放了指针:
p1 = malloc(sizeof(int));
foo(p1); /* this function calls free(p1) */
p2 = malloc(sizeof(int)); /* may allocate the block already used by p1 */
关于Calloc() 正在分配先前分配的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37903271/
这个问题已经有答案了: Do I cast the result of malloc? (29 个回答) 已关闭 8 年前。 有什么区别: int *array; array = (int*) cal
我是一名初学者 C 程序员,我认为情况会是这样,但如果可能的话,我希望得到一些肯定。 如果它们相同,为什么不只取一个参数呢? 最佳答案 calloc(a, b) 和 calloc(b, a) 之间没有
这个问题在这里已经有了答案: Is calloc(4, 6) the same as calloc(6, 4)? (7 个答案) 关闭 3 个月前。 calloc(10,4) 和 calloc(1,
所以calloc()通过向操作系统询问一些虚拟内存来工作。操作系统与 MMU 协同工作,并巧妙地以虚拟内存地址进行响应,该地址实际上映射到 copy-on-write, read-only page
在玩 hashmap 玩具示例的实现时(为了好玩)我发现了一个奇怪的行为,calloc 没有像预期的那样将我想要的整个内存块初始化为零。如果整个内存块都清零,则以下代码应该不会产生任何输出: #inc
我想创建一个封装动态分配数组的结构。它看起来像这样: typedef struct IntArray { int *field; size_t length; } IntArray;
我正在开发一个 C 项目,事实证明,在特定时刻,我调用了 calloc() 函数,它分配了一个已在使用中的内存块。这怎么可能?我检查了我的内存分配使用情况,每次调用 malloc/calloc 时,我
在我的程序中,calloc() 不适用于超过 38 的大小,但小于此数字则可以完美运行。在本例中,我想分配 128 个 int,然后释放它。 怎么了? #include #include #inc
我的main函数有这个: int main() { // double minW, minL, width, length; unsigned tileCap = 10; auto
首先,这是我见过的最奇怪的错误。我不知道发生了什么事。任何人都可以就正在发生的事情提供任何帮助,我们将不胜感激。 我正在编写一个 C 程序,该程序将文件读入动态分配的 block 并在这些 blo
calloc 是否分配返回连续的内存位置?如果是,如果不可用,它会做什么? 最佳答案 Does calloc allocate returns contiguous memory location?
这句话是什么意思? //allocated memory for Device info (*PppsCoreStructure)->psDeviceDetails=(sDeviceDetails *
这是我的代码: #include #include int main(){ int n=10; char *s= calloc(2,sizeof(char)); sprintf(s,"%d",n)
我在 Tiva C launchpad (ARM Cortex M4) 上分配内存时遇到问题,我想做的是在某个时候动态分配指向另一个结构内部结构的指针 calloc() 返回一个指针,该指针的值与存储
我是 C 的新手。 我知道这是正确的: char* Str; Str = (char*)calloc(Str_Len, sizeof(char)); ,但为什么这是不正确的? char* Str; *
我遇到了某种指针冲突, 基本上,在我做的一个函数中, a = calloc(1,28); // gives me 0x100100d10 然后很快在我做的一个子函数中, b = calloc(1,16
这是一段代码。N=70000 或更多时,代码会继续执行 STEP1 并因段错误而崩溃。相反,如果我把例如N=50000,calloc返回NULL,程序退出返回2。那么为什么 N=70000 callo
查看刚刚提出的这个问题:Inconveniences of pointers to static variables那么,这样做会被视为不良做法吗? char* strpart(char* strin
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Is NULL always zero in C? C 标准为 calloc() 规定了以下内容: The
清零内存有什么优势(即 calloc() 优于 malloc())?无论如何,您不会将值更改为其他值吗? 最佳答案 有两个阵营:一个说在声明变量时初始化变量有助于发现错误。这个阵营中的人确保他们声明的
我是一名优秀的程序员,十分优秀!