相关疑难解决方法(0)

我是否施放了malloc的结果?

这个问题,有人建议意见,我应该不会投的结果malloc,即

int *sieve = malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)

而不是:

int *sieve = (int *) malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?

c malloc casting

2318
推荐指数
27
解决办法
22万
查看次数

为什么有时将字符串文字传递给char*参数只是编译器错误?

我正在使用C和C++程序.我们曾经在没有make-strings-writable选项的情况下进行编译.但是这得到了一堆警告,所以我把它关掉了.

然后我得到了一堆形式的错误"无法将const char*转换为函数foo的argmuent 3中的char*".所以,我经历了很多修改来解决这些问题.

然而,今天,程序崩溃,因为文字""被传递到一个期待char*的函数,并将第0个字符设置为0.它没有做任何坏事,只是试图编辑一个常量,并且崩溃.

我的问题是,为什么不是编译器错误?

如果它很重要,这是在使用gcc-4.0编译的mac上.

编辑:添加代码:

char * host = FindArgDefault("EMailLinkHost", "");
stripCRLF(linkHost, '\n');
Run Code Online (Sandbox Code Playgroud)

哪里:

char *FindArgDefault(char *argName, char *defVal) 
{// simplified
    char * val = defVal;
    return(val);
}
Run Code Online (Sandbox Code Playgroud)

void stripCRLF(char *str, char delim)
{
    char *p, *q;

    for (p = q = str; *p; ++p) {
        if (*p == 0xd || *p == 0xa) {
            if (p[1] == (*p ^ 7)) ++p;
            if (delim == -1) *p = delim;
            }
        *q++ = *p;
        }
    *q = …
Run Code Online (Sandbox Code Playgroud)

c c++ const char string-literals

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

标签 统计

c ×2

c++ ×1

casting ×1

char ×1

const ×1

malloc ×1

string-literals ×1