关于指针和分段错误的问题。
答案 0 :(得分:1)
考虑一下:
dir_name = strcat(".beargit/", commit_id);
您正在尝试将commit_id
添加到常量字符串的末尾。该字符串可能在只读内存中,并且尝试修改它会导致未定义的行为 - 在您的情况下,是一个分段错误。充其量只会导致未定义的行为,尽管有一个强有力的论据,即分段错误是好的,因为你不能忽视这样一个问题。
我该如何解决?
您目前有:
char* dir_name = malloc(strlen(commit_id) + 10);
dir_name = strcat(".beargit/", commit_id);
如果你没有崩溃,你就会泄漏新分配的内存。你应该使用:
char* dir_name = malloc(strlen(commit_id) + 10);
if (dir_name == 0)
…report error and exit…Do not pass Go; Do not collect $200…
strcpy(dir_name, ".beargit/");
strcat(dir_name, commit_id);
或者:
sprint(dir_name, ".beargit/%s", commit_id);
毫无疑问,其他方式也可以找到。我很想将[{1}}中的10
替换为正确大小的malloc()
; sizeof(".beargit/")
运算符在返回的长度中包含终结null。
别忘了释放分配的内存!
答案 1 :(得分:1)
试
char breargit_buffer[256] = ".beargit/"; // allocate some large enrough non read only buffer
dir_name = strcat(breargit_buffer, commit_id);
答案 2 :(得分:0)
您的<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:useDefaultMargins="true"
android:alignmentMode="alignBounds"
android:columnOrderPreserved="false"
android:columnCount="2"
android:orientation="horizontal"
android:rowCount="7"
android:paddingTop="6dp">
<ImageView
android:id="@+id/imgWriteFeedback"
android:layout_width="wrap_content"
android:layout_gravity="left"
android:layout_row="0"
android:layout_column="0"
android:src="@drawable/write_to_us"
android:paddingTop="6dp"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:paddingBottom="6dp"/>
<TextView
android:id="@+id/lblWriteFeedback"
android:layout_row="0"
android:layout_column="1"
android:textSize="20sp"
android:gravity="left"
android:textColor="@android:color/black"
android:layout_marginLeft="5dp"
android:text="@string/write_to_us"
android:paddingTop="6dp"
android:layout_gravity="left"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="1px"
android:layout_marginTop="3dp"
android:background="@color/frame_background"
android:orientation="horizontal"
android:layout_columnSpan="2"/>
<ImageView
android:id="@+id/imgRateUs"
android:layout_width="wrap_content"
android:layout_gravity="left"
android:layout_row="1"
android:layout_column="0"
android:src="@drawable/rate_us_resized"
android:paddingTop="6dp"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:paddingBottom="6dp"/>
<TextView
android:id="@+id/lblRateUs"
android:layout_row="1"
android:layout_column="1"
android:textSize="20sp"
android:gravity="left"
android:textColor="@android:color/black"
android:layout_marginLeft="5dp"
android:paddingTop="6dp"
android:text="@string/rate_us"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="1px"
android:layout_marginTop="3dp"
android:background="@color/frame_background"
android:orientation="horizontal"
android:layout_columnSpan="2"/>
<ImageView
android:id="@+id/imgShareApp"
android:layout_width="wrap_content"
android:layout_gravity="left"
android:layout_row="2"
android:layout_column="0"
android:src="@drawable/share_resized"
android:paddingTop="6dp"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:paddingBottom="6dp"/>
<TextView
android:id="@+id/lblShareApp"
android:layout_row="2"
android:layout_column="1"
android:textSize="20sp"
android:gravity="left"
android:textColor="@android:color/black"
android:layout_marginLeft="5dp"
android:paddingTop="6dp"
android:text="@string/share_app"
/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="1px"
android:layout_marginTop="3dp"
android:background="@color/frame_background"
android:orientation="horizontal"
android:layout_columnSpan="2"/>
</GridLayout>
参数已被撤消。它是strcat
尝试:
strcat(destination, source)