小编fSa*_*azy的帖子

什么时候小心使用free()来释放malloc()用过的内存?

我在这里读了许多问题,其中一些关于c中free()函数的文章释放了未使用变量的内存.在我的情况下,我有以下代码块.

char *injectStrAt(char *str, char *strToIn, int pos)
{
    char *strC = malloc(strlen(str) + strlen(strToIn) + 1);
    strncpy(strC, str, pos);
    strC[pos] = '\0';
    strcat(strC, strToIn);
    strcat(strC, str + pos);
    return strC;
}
Run Code Online (Sandbox Code Playgroud)

我用上面的函数将一个字符串块注入一个数组.我正在malloc用来创造一个新的char*.在上述情况下我需要做free(strC)什么?建议请.

c malloc free

5
推荐指数
1
解决办法
422
查看次数

php中的新DateTime()vs新的DateTime('NOW')

在我发布这个问题之前,我在几个地方搜索了这个问题.我真的找不到合适的答案.

我评估了两种方式......

$date = new DateTime()
Run Code Online (Sandbox Code Playgroud)

AMD

$date = new DateTime('NOW')
Run Code Online (Sandbox Code Playgroud)

是否必须为上述两者提供相同的结果,或者它们是否有任何不同的情况?

php datetime

2
推荐指数
1
解决办法
2376
查看次数

如何在c编程中编译和链接文件?

我是c编程语言的新手.我在centos linux系统下的同一目录下有以下文件.

  • game.c

    game.h

    main.c中

game.h

#ifndef GAME_
#define GAME_

extern void game (void);

#endif
Run Code Online (Sandbox Code Playgroud)

game.c

#include "game.h"

void game (void)
{
   return 23;
}
Run Code Online (Sandbox Code Playgroud)

main.c中

#include "game.h"

int main (void)
{
    game();
}
Run Code Online (Sandbox Code Playgroud)

当我使用以下命令编译时..

gcc main.c
Run Code Online (Sandbox Code Playgroud)

我收到如下错误消息..

/tmp/ccwIlBKt.o:在功能main': main.c:(.text+0x7): undefined reference to游戏'collect2:ld中返回1退出状态

链接我的头文件的正确方法是什么?

c linux

2
推荐指数
1
解决办法
1924
查看次数

我在下面的代码中得到Aborted(core dumped)

嗨,在我的下面的代码测试realloc()我收到错误Aborted (Core dumped).

代码的输出如下

$ ./realloc
My Name // <<-- This works
Aborted (core dumped) // <<-- why this error occur?
Run Code Online (Sandbox Code Playgroud)

copyThis()第一次调用函数给出正确的结果并且不产生错误.以同样的方式,如果我copyThis()第二次打电话,它会出错.我不明白为什么会这样.任何人都可以指出问题出在哪里以及我应该做些什么调整?

代码如下

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char *copyThis(char *str1, const char *str2, size_t size);

int main(void)
{
    char *ptr1 = "My Name ";
    char *ptr2 = "is Alice";
    char *ptr3;
    char *ptr4;

    ptr3 = copyThis(ptr3, ptr1, strlen(ptr1) + 1); // This works
    printf("%s\n", ptr3);

    ptr4 = copyThis(ptr4, ptr2, strlen(ptr2) +1); …
Run Code Online (Sandbox Code Playgroud)

c memory-management realloc

1
推荐指数
1
解决办法
4090
查看次数

标签 统计

c ×3

datetime ×1

free ×1

linux ×1

malloc ×1

memory-management ×1

php ×1

realloc ×1